jails/li3_behaviors

Lithium PHP 框架的行为模型

安装量: 1,631

依赖者: 3

建议者: 0

安全: 0

星标: 8

关注者: 4

分支: 4

开放问题: 0

类型:lithium-library

dev-master 2013-12-14 16:13 UTC

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 的过滤器系统以及所有使这一切成为可能的人(包括我爱我的父母)。

构建状态

Build Status