%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Db/Traits/ |
Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Db/Traits/GetterSetterTrait.php |
<?php /* * @copyright 2023 Passwords App * * @author Marius David Wieschollek * @license AGPL-3.0 * * This file is part of the Passwords App * created by Marius David Wieschollek. */ namespace OCA\Passwords\Db\Traits; use BadFunctionCallException; use Exception; trait GetterSetterTrait { /** * @param string $name * @param array $args * * @throws Exception */ protected function setter(string $name, array $args): void { if(property_exists($this, $name)) { if(isset($this->{$name}) && $this->{$name} === $args[0]) { return; } $this->markFieldUpdated($name); if($args[0] !== null && array_key_exists($name, $this->getFieldTypes())) { $type = $this->getFieldTypes()[ $name ]; if($type === 'blob') { // (B)LOB is treated as string when we read from the DB if(is_resource($args[0])) { $args[0] = stream_get_contents($args[0]); } $type = 'string'; } if($type === 'datetime') { if(!$args[0] instanceof \DateTime) { $args[0] = new \DateTime($args[0]); } } elseif($type === 'json') { if(!is_array($args[0])) { $args[0] = json_decode($args[0], true); } } else { settype($args[0], $type); } } $this->$name = $args[0]; } else { throw new BadFunctionCallException($name.' is not a valid attribute'); } } /** * @param string $name * * @return mixed */ protected function getter(string $name): mixed { if(property_exists($this, $name)) { return $this->{$name} ?? null; } else { throw new BadFunctionCallException($name.' is not a valid attribute'); } } }