示例#1
0
 /**
  * 2016-08-04
  * 2016-11-25
  * Отныне метод возвращает класс не обязательно из базовой папки (например, \Df\Sso\Settings),
  * а из папки с тем же окончанием, что и у вызываемого класса.
  * Например, \Df\Sso\Settings\Button::convention() будет искать класс в папке Settings\Button
  * модуля, к которому относится класс $c.
  * @param object|string $c
  * @param string $key [optional]
  * @param null|string|int|S $scope [optional]
  * @param mixed|callable $d [optional]
  * @return self
  */
 public static function convention($c, $key = '', $scope = null, $d = null)
 {
     /** @var self $result */
     /**
      * 2016-11-25
      * Используем 2 уровня кэширования, и оба они важны:
      * 1) Кэширование self::s() приводит к тому, что вызов s() непосредственно для класса
      * возвращает тот же объект, что и вызов convention(). Это очень важно.
      * 2) Кэширование dfcf() позволяет нам не рассчитывать df_con_heir()
      * при каждом вызове convention().
      */
     $result = dfcf(function ($c, $def) {
         return self::s(df_con_heir($c, $def));
     }, [df_cts($c), static::class]);
     return df_null_or_empty_string($key) ? $result : $result->v($key, $scope, $d);
 }
示例#2
0
文件: Button.php 项目: mage2pro/core
 /**
  * 2016-11-24
  * 2016-11-27
  * Не помечаем метод как final, потому что потомки уточняют его тип посредством phpDoc,
  * и тогда IntelliJ IDEA ругается на final.
  * @return S
  */
 protected function s()
 {
     return dfc($this, function () {
         return df_ic(df_con_heir($this, S::class), [S::PREFIX => $this['dfConfigPrefix']]);
     });
 }
示例#3
0
 /**
  * 2016-06-04
  * 2016-12-01
  * @see \Dfe\AmazonLogin\Customer
  * @see \Dfe\FacebookLogin\Customer
  * Не объявляем этот метод как final, потому что классы
  * @see \Dfe\FacebookLogin\Controller\Index\Index
  * @see \Dfe\AmazonLogin\Controller\Index\Index
  * уточняют класс его резульата посредством PHPDoc.
  * @return Customer
  */
 protected function c()
 {
     return dfc($this, function () {
         /** @var Customer $result */
         $result = df_create(df_con_heir($this, Customer::class));
         $result->validate();
         return $result;
     });
 }