Самый мнемонический способ представления вашего псевдокода в Python:
x = 0
y = 1
z = 3
mylist = []
if any(v == 0 for v in (x, y, z)):
mylist.append("c")
if any(v == 1 for v in (x, y, z)):
mylist.append("d")
if any(v == 2 for v in (x, y, z)):
mylist.append("e")
if any(v == 3 for v in (x, y, z)):
mylist.append("f")
Используйте прослушиватель событий, который прослушивает события Model.beforeSave
, Model.beforeFind
и Model.initialize
и применяет все, что вы хотите сделать. Прочитайте главу о событиях и документации для обратных вызовов таблицы .
use Cake\Event\EventListenerInterface;
use Cake\Event\Event;
class SomeListener implements EventListenerInterface
{
public function implementedEvents()
{
return [
'Model.beforeFind' => 'beforeFind',
];
}
public function beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary)
{
// Your code here
}
}
И присоедините ее к глобальному . Теперь он будет слушать обратные вызовы всех табличных объектов.
Вы также можете создать AppTable в своей папке src / Model / Table:
namespace App\Model\Table;
use Cake\ORM\Table;
class AppTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->addBehavior('myBehavior');
$this->addBehavior('myBehavior2');
$this->addBehavior('myBehavior3');
}
}
И затем расширяет ваш класс Table с помощью AppTable:
namespace App\Model\Table;
use App\Model\Table\AppTable;
class ArticlesTable extends AppTable
{
}