PHP code example of unionofrad / li3_behaviors
1. Go to this page and download the library: Download unionofrad/li3_behaviors library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
unionofrad / li3_behaviors example snippets
Libraries::add('li3_behaviors')
// ...
class Posts extends \lithium\data\Model {
use li3_behaviors\data\model\Behaviors;
protected $_actsAs = [
'Sluggable' => ['field' => 'slug', 'label' => 'title']
];
// ...
// Bind the sluggable behavior with configuration.
Posts::bindBehavior('Sluggable', ['field' => 'slug', 'label' => 'title']);
// Accessing configuration.
Posts::behavior('Sluggable')->config();
Posts::behavior('Sluggable')->config('field');
// Updating configuration.
Posts::behavior('Sluggable')->config('field', 'alt');
// Unbinding it again.
Posts::unbindBehavior('Sluggable');
namespace app\extensions\data\behavior;
use lithium\util\Inflector;
class Sluggable extends \li3_behaviors\data\model\Behavior {
protected static $_defaults = [
'field' => 'slug',
'label' => 'title'
];
protected static function _filters($model, $behavior) {
Filters::apply($model, 'save', function($params, $next) use ($behavior) {
$params['data'][$behavior->config('field')] = static::_generate(
$params['data'][$behavior->config('label')]
);
return $next($params);
});
}
protected static function _generate($value) {
return strtolower(Inflector::slug($value));
}
}
// ...
class Serializable extends \li3_behaviors\data\model\Behavior {
protected static $_defaults = [
'fields' => []
];
protected static function _config($model, $behavior, $config, $defaults) {
$config += $defaults;
$config['fields'] = Set::normalize($config['fields']);
foreach ($config['fields'] as $field => &$pass) {
if (!$pass) {
$pass = 'json';
}
}
return $config;
}
// ...
// ...
class TokenGenerator extends \li3_behaviors\data\model\Behavior {
protected static $_defaults = [
'short' => false
];
// Generates a random token either short (8 chars) or long (16 chars) and
// returns it. Default expiration is one year.
public static function token($model, $behavior) {
$token = substr(md5(Random::generate(32)), 0, $behavior->config('short') ? 8 : 16);
$expires = date('Y-m-d H:i:s', strtotime('+1 year'));
return compact('token', 'expires');
}
// ...
// ...
class Publishable extends \li3_behaviors\data\model\Behavior {
protected static $_defaults = [
'field' => 'is_published'
];
public function publish($model, $behavior, $entity) {
$field = $behavior->config('field');
$entity->{$field} = true;
}
// ...
// ...
class Taggable extends \li3_behaviors\data\model\Behavior {
// ...
protected static function _methods($model, $behavior) {
return [
$behavior->config('field') => function() { /* ... */ }
]
}
// ...
Posts::bindBehavior('Taggable', ['field' => 'taxonomy']);
$item = Posts::create();
$item->taxonomy();
// ...
class Timestamp extends \li3_behaviors\data\model\Behavior {
// ...
protected static function _filters($model, $behavior) {
Filters::apply($model, 'save', function($params, $next) use ($behavior) {
$params['data'] = static::_timestamp($behavior, $params['entity'], $params['data']);
return $next($params);
});
}
protected static function _timestamp($behavior, $entity, $data) {
// ...
}
// ...
// ...
class Taggable extends \li3_behaviors\data\model\Behavior {
// ...
protected static function _finders($model, $behavior) {
$model::finder('tag', function($params, $next) use ($behavior) {
// ...
return $next($params);
});
}
// ...