jails / li3_behaviors
Lithium PHP 框架的行为模型
dev-master
2013-12-14 16:13 UTC
Requires
- php: >=5.4
- composer/installers: dev-master
This package is auto-updated.
Last update: 2024-08-29 03:29:09 UTC
README
需求
PHP 5.4
安装
将代码检出至您的库目录之一
cd libraries
git clone git@github.com:jails/li3_behaviors.git
在 /app/config/bootstrap/libraries.php
中包含库
Libraries::add('li3_behaviors');
展示
提供简单方式扩展模型的模型行为。此模式允许将常见逻辑封装在行为中,以保持模型轻量并仅由其自身的业务逻辑组成。
API
简单地将模型创建附加到行为上
<?php //app/models/Posts.php namespace app\models; use li3_behaviors\data\model\Behaviors; class Posts extends \lithium\data\Model { use Behaviors; protected $_actsAs = ['Slug' => [ 'fields' => ['title' => 'title', 'name' => 'slug'] ]]; } ?>
<?php //app/extensions/data/behavior/Slug.php namespace app\extensions\data\behavior; use lithium\util\Inflector; class Slug extends \li3_behaviors\data\model\Behavior { public function __construct(array $config = []) { $defaults = [ 'fields' => ['label' => 'slug'] ]; parent::__construct($config + $defaults); } protected function _init() { parent::_init(); if ($model = $this->_model) { $behavior = $this; $model::applyFilter('save', function($self, $params, $chain) use ($behavior) { $params = $behavior->invokeMethod('_slug', array($params)); return $chain->next($self, $params, $chain); }); } } protected function _slug($params) { extract($this->_config); foreach ($fields as $from => $to) { if (isset($params['data'][$from])) { $params['data'][$to] = Inflector::slug($params['data'][$from]); } } return $params; } } ?>
问候
li3 团队,Nateabele 的过滤器系统以及所有使这一切成为可能的人(包括我爱我的父母)。