コード例 #1
0
ファイル: NotNewRecord.php プロジェクト: Liv1020/cms
 /**
  * @param Component $component
  * @return \skeeks\sx\validate\Result
  */
 public function validate($component)
 {
     if (!$component instanceof ActiveRecord) {
         return $this->_bad(\Yii::t('app', "Object: {class} must be inherited from: {parent}", ['class' => $component->className(), 'parent' => ActiveRecord::className()]));
     }
     return !$component->isNewRecord ? $this->_ok() : $this->_bad(\Yii::t('app', "The object must already be saved"));
 }
コード例 #2
0
 /**
  * Getting behavior object from given model
  *
  * @param Component $model
  * @return SeoBehavior
  * @throws InvalidConfigException if model don't have our SeoBehavior
  */
 protected static function behavior(Component $model)
 {
     foreach ($model->getBehaviors() as $b) {
         if ($b instanceof SeoBehavior) {
             return $b;
         }
     }
     throw new InvalidConfigException('Model ' . $model->className() . ' must have SeoBehavior');
 }
コード例 #3
0
 public function testOf()
 {
     $container = new Container();
     $className = Component::className();
     $instance = Instance::of($className, $container);
     $this->assertTrue($instance instanceof Instance);
     $this->assertTrue($instance->get() instanceof Component);
     $this->assertTrue(Instance::ensure($instance, $className) instanceof Component);
     $this->assertTrue($instance->get() !== Instance::ensure($instance, $className));
 }
コード例 #4
0
ファイル: HasBehavior.php プロジェクト: Liv1020/cms
 /**
  * @param Component $component
  * @return \skeeks\sx\validate\Result
  */
 public function validate($component)
 {
     if (!$component instanceof Component) {
         return $this->_bad(\Yii::t('app', "The object must be inherited from") . ": " . Component::className());
     }
     if (!$this->_behavior) {
         return $this->_ok();
     }
     $hasBehaviors = $component->getBehaviors();
     foreach ($hasBehaviors as $behavior) {
         if ($behavior instanceof $this->_behavior) {
             return $this->_ok();
         }
     }
     return $this->_bad(\Yii::t('app', "At the component: {class} requires a behavior", ['class' => $component->className()]) . ": " . $this->_behavior);
 }
コード例 #5
0
 /**
  * Checks whether or not a subject has a behavior of a certain type attached.
  *
  * @param \yii\base\Component $subject the subject to check
  * @param string|\yii\base\Behavior $behavior either the class name or an instance of the behavior
  * @param bool $throwException if set to true, an exception will be thrown if the
  * subject doesn't have the behavior attached
  * @return bool true if attached
  * @throws \yii\base\InvalidParamException when subject is of wrong type
  * @throws \yii\base\InvalidConfigException if desired and behavior missing
  */
 public static function hasBehavior($subject, $behavior, $throwException = false)
 {
     //only components allowed
     if (!$subject instanceof \yii\base\Component) {
         throw new InvalidParamException(Yii::t('app', 'Subject must extend Component'));
     }
     //prepare vars
     $behavior = $behavior instanceof \yii\base\Behavior ? $behavior::className() : $behavior;
     //check if behavior is attached
     $found = false;
     foreach ($subject->behaviors() as $name => $config) {
         $className = is_array($config) ? $config['class'] : $config;
         if (strcmp($className, $behavior) === 0) {
             $found = true;
             break;
         }
     }
     if ($throwException && !$found) {
         $msg = Yii::t('app', '{subject} needs to have behavior {behavior} attached', ['subject' => $subject->className(), 'behavior' => $behavior]);
         throw new InvalidConfigException($msg);
     }
     return $found;
 }
コード例 #6
0
ファイル: test2.php プロジェクト: xinyifuyun/code-yii
}
function name($event)
{
    echo 'hi ' . $event->data . '<br />';
}
function event()
{
    echo 'hello event!<br />';
}
function event2()
{
    echo 'hello event2!<br />';
}
$test = new Test2();
$test->on('say', 'hello');
$test->on('say', 'name', 'shuru');
$test->on('say', [$test, 'test']);
$test->on('say', ['Test2', 'test_two']);
$test->trigger('say');
//会触发实例的事件
echo '<hr />';
$test->off('say', 'hello');
$test->trigger('say');
echo '<hr />';
Event::on(Test2::className(), 'say', 'event');
$test->trigger('say');
//因为该对象的类,也绑定了该事件,因此会触发类事件,类事件是在Event.php里面
echo '<hr />';
Event::on(Component::className(), 'say', 'event2');
//父类也绑定了该事件,因此,也会被触发
$test->trigger('say');