Пример #1
0
/**
 * 2016-03-27
 * @param OrderInterface|Order $order
 * @param int $transactionId
 * @param $allowNull [optional]
 * @return Invoice|null
 */
function df_invoice_by_transaction(OrderInterface $order, $transactionId, $allowNull = false)
{
    /** @var Invoice|null $result */
    $result = df_ftn(DfPayment::getInvoiceForTransactionId($order, $transactionId));
    df_assert($allowNull || $result);
    return $result;
}
Пример #2
0
 /**
  * @return Df_YandexMarket_Helper_Settings
  */
 private function getSettings()
 {
     /** @var Df_YandexMarket_Helper_Settings $result  */
     $result = df_cfg()->yandexMarket();
     df_assert($result instanceof Df_YandexMarket_Helper_Settings);
     return $result;
 }
Пример #3
0
 /**
  * @return void
  */
 public function indexAction()
 {
     /** @var Df_YandexMarket_Model_Action_Front $action */
     $action = df_model(Df_YandexMarket_Model_Action_Front::getNameInMagentoFormat(), array(Df_YandexMarket_Model_Action_Front::PARAM__CONTROLLER => $this));
     df_assert($action instanceof Df_YandexMarket_Model_Action_Front);
     $action->process();
 }
Пример #4
0
 /**
  * @return Df_YandexMarket_Helper_Settings_Shop
  */
 public function shop()
 {
     /** @var Df_YandexMarket_Helper_Settings_Shop $result */
     static $result;
     if (!isset($result)) {
         /** @var Df_YandexMarket_Helper_Settings_Shop $result  */
         $result = Mage::helper(Df_YandexMarket_Helper_Settings_Shop::getNameInMagentoFormat());
         df_assert($result instanceof Df_YandexMarket_Helper_Settings_Shop);
     }
     return $result;
 }
Пример #5
0
 /**
  * @override
  * @param Varien_Data_Form_Element_Abstract $element
  * @return string
  */
 protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
 {
     /** @var Df_YandexMarket_Model_Field_Conditions $field */
     $field = df_model(Df_YandexMarket_Model_Field_Conditions::getNameInMagentoFormat(), array(Df_YandexMarket_Model_Field_Conditions::PARAM__ELEMENT => $element, Df_YandexMarket_Model_Field_Conditions::PARAM__BLOCK => $this));
     df_assert($field instanceof Df_YandexMarket_Model_Field_Conditions);
     /** @var string $result  */
     $result = $field->getHtml();
     $result .= sprintf('<input type="hidden" value="0" name="%s"/>', $element->getData('name'));
     df_result_string($result);
     return $result;
 }
Пример #6
0
 /**
  * @param string $locale
  * @return \Zend_Validate_Interface
  */
 protected function getZendValidator($locale)
 {
     df_param_string_not_empty($locale, 0);
     if (!isset($this->{__METHOD__}[$locale])) {
         /** @var string $class */
         $class = $this->getZendValidatorClass();
         /** @var \Zend_Validate_Interface $result */
         $result = new $class($locale);
         df_assert($result instanceof \Zend_Validate_Interface);
         $this->{__METHOD__}[$locale] = $result;
     }
     return $this->{__METHOD__}[$locale];
 }
Пример #7
0
 /**
  * @return Mage_Core_Model_Store
  */
 public function getStoreProcessed()
 {
     if (!isset($this->_storeProcessed)) {
         /** @var Df_Core_Model_ActionHelper_StoreProcessed $helper */
         $helper = df_model(Df_Core_Model_ActionHelper_StoreProcessed::getNameInMagentoFormat(), array(Df_Core_Model_ActionHelper_StoreProcessed::PARAM__MODULE_NAME => 'Яндекс.Маркет', Df_Core_Model_ActionHelper_StoreProcessed::PARAM__URL_EXAMPLE => 'http://example.ru/df-yandex-market/yml/?store-view=<системное имя витрины>/'));
         df_assert($helper instanceof Df_Core_Model_ActionHelper_StoreProcessed);
         /** @var Mage_Core_Model_Store $result */
         $result = $helper->getStoreProcessed();
         df_assert($result instanceof Mage_Core_Model_Store);
         $this->_storeProcessed = $result;
     }
     df_assert($this->_storeProcessed instanceof Mage_Core_Model_Store);
     return $this->_storeProcessed;
 }
Пример #8
0
 /**
  * @return Mage_CatalogRule_Model_Rule
  */
 public function getRule()
 {
     if (!isset($this->_rule)) {
         /** @var Mage_CatalogRule_Model_Rule $result  */
         $result = df_model('catalogrule/rule');
         df_assert($result instanceof Mage_CatalogRule_Model_Rule);
         $result->load($this->getConditions());
         df_assert_between($result->getId(), 1);
         df_assert($result instanceof Mage_CatalogRule_Model_Rule);
         $this->_rule = $result;
     }
     df_assert($this->_rule instanceof Mage_CatalogRule_Model_Rule);
     return $this->_rule;
 }
Пример #9
0
 /**
  * @return Mage_Directory_Model_Currency
  */
 public function getCurrency()
 {
     if (!isset($this->_currency)) {
         /** @var string $currencyCode  */
         $currencyCode = Mage::getStoreConfig('df_yandex_market/general/currency', df_helper()->yandexMarket()->getStoreProcessed());
         df_result_string($currencyCode);
         /** @var Mage_Directory_Model_Currency $result  */
         $result = df_model(Df_Directory_Const::CURRENCY_CLASS_MF);
         df_assert($result instanceof Mage_Directory_Model_Currency);
         $result->load($currencyCode);
         $this->_currency = $result;
     }
     df_assert($this->_currency instanceof Mage_Directory_Model_Currency);
     return $this->_currency;
 }
Пример #10
0
 /**
  * @return Mage_CatalogRule_Model_Rule
  */
 private function getRule()
 {
     if (!isset($this->_rule)) {
         /** @var Mage_CatalogRule_Model_Rule $result  */
         $result = df_model('catalogrule/rule');
         df_assert($result instanceof Mage_CatalogRule_Model_Rule);
         if (0 < $this->getRuleExistingId()) {
             $result->load($this->getRuleExistingId());
             df_assert_between($result->getId(), 1);
         }
         $result->addData(array('name' => 'Яндекс.Маркет', 'description' => 'не редактировать'));
         $this->_rule = $result;
     }
     df_assert($this->_rule instanceof Mage_CatalogRule_Model_Rule);
     return $this->_rule;
 }
Пример #11
0
/**
 * 2015-02-26
 * Складывает 2 числовых массива как векторы.
 * Второй аргумент может быть также числом:
 * тогда считается, что все координаты этого вектора равны данному числу.
 * @param int[]|float[] $a
 * @param int|float|int[]|float[] $b
 * @return int[]|float[]
 */
function df_vector_sum(array $a, $b)
{
    /** @var int $length */
    $length = count($a);
    if (!is_array($b)) {
        $b = dfa_fill(0, $length, $b);
    } else {
        df_assert($length === count($b));
        $b = array_values($b);
    }
    $a = array_values($a);
    /** @var int[]|float[] $result */
    $result = [];
    for ($i = 0; $i < $length; $i++) {
        $result[] = $a[$i] + $b[$i];
    }
    return $result;
}
Пример #12
0
 /**
  * @used-by \Df\Qa\Method::raiseErrorParam()
  * @param int $paramOrdering  		zero-based
  * @return \ReflectionParameter
  */
 public function methodParameter($paramOrdering)
 {
     df_param_integer($paramOrdering, 0);
     if (!isset($this->{__METHOD__}[$paramOrdering])) {
         // Метод должен существовать
         df_assert($this->method());
         // Параметр должен существовать
         if ($paramOrdering >= count($this->method()->getParameters())) {
             df_error("Программист ошибочно пытается получить значение параметра с индексом {$paramOrdering}" . " метода «{$this->methodName()}», хотя этот метод принимает всего %d параметров.", count($this->method()->getParameters()));
         }
         df_assert_lt(count($this->method()->getParameters()), $paramOrdering);
         /** @var \ReflectionParameter $result */
         $result = dfa($this->method()->getParameters(), $paramOrdering);
         df_assert($result instanceof \ReflectionParameter);
         $this->{__METHOD__}[$paramOrdering] = $result;
     }
     return $this->{__METHOD__}[$paramOrdering];
 }
Пример #13
0
/**
 * 2016-03-26
 * @param string|M $model
 * Идентификатор необязательно является целым числом,
 * потому что объект может загружаться по нестандартному ключу
 * (с указанием этого ключа параметром $field).
 * Так же, и первичный ключ может не быть целым числом (например, при загрузке валют).
 * @param string|int $id
 * @param bool $throwOnAbsence [optional]
 * @param string|null $field [optional]
 * @return M|null
 */
function df_load($model, $id, $throwOnAbsence = true, $field = null)
{
    df_assert($id);
    if (!is_null($field)) {
        df_param_string($field, 3);
    }
    /** @var M|null $result */
    $result = is_string($model) ? df_om()->create($model) : $model;
    df_assert($result instanceof M);
    $result->load($id, $field);
    if (!$result->getId()) {
        if (!$throwOnAbsence) {
            $result = null;
        } else {
            df_error('A model of class «%s» with ID «%s» is absent.', get_class($result), $id);
        }
    }
    return $result;
}
Пример #14
0
 /**
  * @param string $path
  * @param bool $isDir [optional]
  * @return void
  */
 public function createAndMakeWritable($path, $isDir = false)
 {
     df_param_string_not_empty($path, 0);
     if (!isset($this->{__METHOD__}[$path])) {
         if (file_exists($path)) {
             df_assert(is_dir($path) === $isDir);
             $this->chmod($path);
         } else {
             /** @var string $dir */
             $dir = $isDir ? $path : dirname($path);
             if (!file_exists($dir)) {
                 $this->mkdir($dir);
             } else {
                 $this->chmod($dir);
             }
         }
         $this->{__METHOD__}[$path] = true;
     }
 }
Пример #15
0
 /**
  * @overide
  * @return Df_YandexMarket_Model_System_Config_Backend_Currency
  */
 protected function _beforeSave()
 {
     parent::_beforeSave();
     if (!in_array($this->getValue(), Df_YandexMarket_Model_System_Config_Source_Currency::getAllowedCurrencies())) {
         /** @var string $currencyName  */
         $currencyName = $this->getValue();
         try {
             /** @var Zend_Currency $result  */
             $currency = Mage::app()->getLocale()->currency($this->getValue());
             $currencyName = $currency->getName();
         } catch (Exception $e) {
         }
         df_error(sprintf('Яндекс.Маркет не допускает указанную Вами валюту «%s» в качестве основной валюты магазина.', $currencyName));
     } else {
         /** @var Df_Admin_Model_Config_BackendChecker_CurrencyIsSupported $checker */
         $checker = df_model(Df_Admin_Model_Config_BackendChecker_CurrencyIsSupported::getNameInMagentoFormat(), array(Df_Admin_Model_Config_BackendChecker_CurrencyIsSupported::PARAM__CURRENCY_CODE => $this->getValue(), Df_Admin_Model_Config_BackendChecker_CurrencyIsSupported::PARAM__BACKEND => $this));
         df_assert($checker instanceof Df_Admin_Model_Config_BackendChecker_CurrencyIsSupported);
         $checker->check();
     }
     return $this;
 }
Пример #16
0
 /**
  * 2015-12-08
  * @override
  * @see \Df\GoogleFont\Fonts\Png::draw()
  * @used-by \Df\GoogleFont\Fonts\Png::image()
  * @param resource $image
  * @return void
  */
 protected function draw($image)
 {
     /** @var int $x */
     $x = 0;
     /** @var int $y */
     $y = 0;
     $this->_datumPoints = [];
     /** @var int|bool|resource $r */
     $r = imagefill($image, 0, 0, $this->colorAllocateAlpha($image, $this->bgColor()));
     df_assert($r);
     // http://stackoverflow.com/a/1397584/254475
     imagealphablending($image, true);
     foreach ($this->previews() as $preview) {
         /** @var Preview $preview */
         try {
             /** @var resource $previewImage */
             $previewImage = imagecreatefromstring($preview->contents());
             df_assert($previewImage);
             try {
                 $r = imagecopy($image, $previewImage, $x, $y, 0, 0, $preview->width(), $preview->height());
                 df_assert($r);
                 $this->_datumPoints[$preview->getId()] = [$x, $y];
             } finally {
                 imagedestroy($previewImage);
             }
         } catch (\Exception $e) {
             df_log($e->getMessage());
         }
         $x += $this->previewWidth();
         if ($x >= $this->width()) {
             $x = 0;
             $y += $this->previewHeight() + $this->marginY();
         }
     }
     df_media_write($this->pathToDatumPoints(), df_json_encode($this->_datumPoints));
 }
Пример #17
0
 /**
  * 2016-08-03
  * @override
  * @see \Df\Config\O::validate()
  * @used-by \Df\Config\Backend\Serialized::validate()
  * @return void
  * @throws DFE
  */
 public function validate()
 {
     df_assert(!is_array($this['scale_horizontal']));
 }
Пример #18
0
 /**
  * @return Mage_CatalogRule_Model_Rule
  */
 private function getRule()
 {
     if (!isset($this->_rule)) {
         /** @var Mage_CatalogRule_Model_Rule $result  */
         $result = df_model('catalogrule/rule');
         df_assert($result instanceof Mage_CatalogRule_Model_Rule);
         if (0 < $this->getRuleId()) {
             $result->load($this->getRuleId());
         }
         $result->getConditions()->setJsFormObject('rule_conditions_fieldset');
         $this->_rule = $result;
     }
     df_assert($this->_rule instanceof Mage_CatalogRule_Model_Rule);
     return $this->_rule;
 }
Пример #19
0
 /**
  * 2015-12-30
  * @param string $itemClass
  * @param mixed[] $itemsA
  * @return $this
  */
 public static function i($itemClass, array $itemsA)
 {
     df_assert(!isset($itemsA[self::FAKE]));
     return new self([self::$P__ITEM_CLASS => $itemClass, self::$P__ITEMS_A => $itemsA]);
 }
Пример #20
0
 /**
  * 2015-12-08
  * @used-by \Df\GoogleFont\Fonts\Png::create()
  * @return resource
  */
 private function image()
 {
     /** @var resource|bool $result */
     $result = imagecreatetruecolor($this->width(), $this->height());
     df_assert(false !== $result);
     $r = imagesavealpha($result, true);
     df_assert($r);
     $this->draw($result);
     return $result;
 }
Пример #21
0
 /**
  * @return Mage_Core_Model_Store
  */
 private function getStore()
 {
     /** @var Mage_Core_Model_Store $result  */
     $result = df_helper()->yandexMarket()->getStoreProcessed();
     df_assert($result instanceof Mage_Core_Model_Store);
     return $result;
 }
Пример #22
0
 /**
 * 2015-11-30
 * 2015-12-13
 * Обратите внимание, что $label может быть как пустой строкой, так и null,
 * и система будет вести себя по-разному в этих случаях.
 * Если $label равно null, то подпись у элемента будет отсутствовать.
 * Если $label равно пустой строке, то у элемента будет пустая подпись:
 * пустые теги <label><span></span></label>
 * Пустая подпись позволяет нам задействовать в качестве подписи FontAwesome:
 * мы цепляем к пустому тегу label правила типа:
 			> label:not(.addafter) {
 				display: inline-block;
 				font-family: FontAwesome;
 				// http://fortawesome.github.io/Font-Awesome/icon/text-width/
 				&:before {content: "\f035";}
 			}
 *
 * 2015-12-28
 * Добавил возможность передачи в качестве $values простого одномерного массива,
 * например: $this->select('decimalSeparator', 'Decimal Separator', ['.', ',']);
 *
 * @used-by \Df\Framework\Form\Element\Fieldset::yesNo()
 * @param string $name
 * @param string|null|Phrase $label
 * @param array(array(string => string|int))|string[]|string|OptionSourceInterface $values
 * @param array(string => mixed)|string $data [optional]
 * @param string|null $type [optional]
 * @return \Magento\Framework\Data\Form\Element\Select|E
 */
 protected function select($name, $label, $values, $data = [], $type = 'select')
 {
     if (!is_array($values)) {
         if (!$values instanceof OptionSourceInterface) {
             $values = df_o($values);
         }
         df_assert($values instanceof OptionSourceInterface);
         $values = $values->toOptionArray();
     }
     if (!is_array($data)) {
         $data = ['note' => $data];
     }
     return $this->field($name, $type, $label, $data + ['values' => df_a_to_options($values)]);
 }
Пример #23
0
/**
 * 2016-08-24
 * 2016-09-04
 * Метод getId присутствует не только у потомков @see \Magento\Framework\Model\AbstractModel,
 * но и у классов сторонних библиотек, например:
 * https://github.com/CKOTech/checkout-php-library/blob/v1.2.4/com/checkout/ApiServices/Charges/ResponseModels/Charge.php?ts=4#L170-L173
 * По возможности, задействуем и сторонние реализации.
 *
 * К сожалению, нельзя здесь для проверки публичности метода использовать @see is_callable(),
 * потому что наличие @see \Magento\Framework\DataObject::__call()
 * приводит к тому, что @see is_callable всегда возвращает true.
 * Обратите внимание, что @uses method_exists(), в отличие от @see is_callable(),
 * не гарантирует публичную доступность метода:
 * т.е. метод может у класса быть, но вызывать его всё равно извне класса нельзя,
 * потому что он имеет доступность private или protected.
 * Пока эта проблема никак не решена.
 *
 * 2016-09-05
 * Этот код прекрасно работает с объектами классов типа @see \Magento\Directory\Model\Currency
 * благодаря тому, что @uses \Magento\Framework\Model\AbstractModel::getId()
 * не просто тупо считывает значение поля id, а вызывает метод
 * @see \Magento\Framework\Model\AbstractModel::getIdFieldName()
 * который, в ссвою очередь, узнаёт имя идентифицирующего поля из своего ресурса:
 * @see \Magento\Framework\Model\AbstractModel::_init()
 * @see \Magento\Directory\Model\ResourceModel\Currency::_construct()
 *
 * @see dfo_hash() использует тот же алгоритм, но не вызывает @see df_id() ради ускорения.
 *
 * @param object|int|string $o
 * @param bool $allowNull [optional]
 * @return int|string|null
 */
function df_id($o, $allowNull = false)
{
    /** @var int|string|null $result */
    $result = !is_object($o) ? $o : ($o instanceof M || method_exists($o, 'getId') ? $o->getId() : null);
    df_assert($allowNull || $result);
    return $result;
}
Пример #24
0
 /**
  * @param string|null $key
  * @param mixed $value
  * @param string[]|bool $wrapInCData [optional]
  * @return X
  */
 private function importString($key, $value, $wrapInCData = [])
 {
     /** @var bool $wrapInCDataAll */
     $wrapInCDataAll = is_array($wrapInCData) ? false : !!$wrapInCData;
     $wrapInCData = df_nta($wrapInCData);
     /**
      * null означает, что метод importString
      * не должен создавать дочерний тэг $key,
      * а должен добавить текст
      * в качестве единственного содержимого текущего тэга
      */
     if (!is_null($key)) {
         df_param_string($key, 0);
     }
     /** @var string $keyAsString */
     $keyAsString = is_null($key) ? $this->getName() : $key;
     /**
      * @var bool $valueIsString
      */
     $valueIsString = is_string($value);
     /** @var string $valueAsString */
     $valueAsString = null;
     try {
         $valueAsString = $valueIsString ? $value : df_string($value);
     } catch (E $e) {
         df_error("Не могу сконвертировать значение ключа «%s» в строку.\n%s", $keyAsString, df_ets($e));
     }
     /** @var bool $needWrapInCData */
     $needWrapInCData = $wrapInCDataAll;
     if ($valueIsString && $valueAsString) {
         /**
         * Поддержка синтаксиса
         				 array(
         					'Представление' =>
         						df_cdata(
         							$this->getAddress()->format(
         								Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_TEXT
         							)
         						)
         				 )
         * Обратите внимание, что проверка на синтаксис[[]] должна предшествовать
         * проверке на принадлежность ключа $keyAsString в массиве $wrapInCData,
         * потому что при соответствии синтаксису[[]] нам надо удалить из значения символы[[]].
         * Обратите внимание, что нам нужно выполнить проверку на синтаксис df_cdata ([[]])
         * даже при $wrapInCDataAll = true, потому что маркеры [[ и ]] из данных надо удалять.
         */
         /**
          * Перед вызовом медленной функции @see preg_match
          * выполняем более быструю и простую проверку @see df_contains
          */
         if (df_contains($valueAsString, '[[') && df_contains($valueAsString, ']]')) {
             /** @var string $pattern */
             $pattern = "#\\[\\[([\\s\\S]*)\\]\\]#mu";
             /** @var string[] $matches */
             $matches = [];
             if (1 === preg_match($pattern, $valueAsString, $matches)) {
                 $valueAsString = $matches[1];
                 $needWrapInCData = true;
             }
         }
         $needWrapInCData = $needWrapInCData || in_array($keyAsString, $wrapInCData);
     }
     /** @var X $result */
     $result = $needWrapInCData ? is_null($key) ? $this->setCData($valueAsString) : $this->addChildText($keyAsString, $valueAsString) : (is_null($key) ? $this->setValue($valueAsString) : $this->addChild($keyAsString, $valueAsString));
     df_assert($result instanceof X);
     return $result;
 }
Пример #25
0
/**
 * @param mixed|null $value
 * @param bool $skipEmptyCheck [optional]
 * @return mixed[]
 */
function df_nta($value, $skipEmptyCheck = false)
{
    if (!is_array($value)) {
        if (!$skipEmptyCheck) {
            df_assert(empty($value));
        }
        $value = [];
    }
    return $value;
}
Пример #26
0
 /**
  * @used-by df_throw_last_error()
  * @return void
  * @throws Exception
  */
 public static function throwLast()
 {
     df_assert(error_get_last());
     df_error(self::i()->main());
 }
Пример #27
0
 /**
  * @param string $class
  * @param string|string[] $functions
  * @return string[]
  */
 protected static function _m($class, $functions)
 {
     df_assert($functions);
     /** @var string[] $result */
     $result = [];
     if (!is_array($functions)) {
         $functions = df_tail(func_get_args());
     }
     foreach ($functions as $function) {
         /** @var string $function */
         $result[] = df_cc_method($class, $function);
     }
     return $result;
 }
Пример #28
0
 /**
  * 2016-02-08
  * @override
  * @see \Magento\Payment\Model\MethodInterface::getFormBlockType()
  * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Payment/Model/MethodInterface.php#L25-L32
  * @see \Magento\Payment\Model\Method\AbstractMethod::getFormBlockType()
  * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Payment/Model/Method/AbstractMethod.php#L510-L518
  *
  * USAGE
  * How is a payment method's getFormBlockType() used? https://mage2.pro/t/691
  * @used-by \Magento\Payment\Helper\Data::getMethodFormBlock()
  * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Payment/Helper/Data.php#L174
  *
  * 2016-02-29
  * Этот метод используется только в административном интерфейсе
  * (в сценарии создания и оплаты заказа администратором).
  *
  * @return void
  */
 public function getFormBlockType()
 {
     df_assert(df_is_backend());
     df_should_not_be_here();
 }
Пример #29
0
 /**
  * 2015-12-10
  * http://php.net/manual/function.imagettfbbox.php
  *
  * Пример $box для шрифта «ABeeZee (regular)»:
  * [-1, 4, 159, 4, 159 -16, -1, -16]
  * Bottom Left: [-1, 4]
  * Bottom Right: [159, 4]
  * Top Right: [159, -16]
  * Top Left: [-1, -16]
  *
  * Прочитайте в Википедии статью про baseline (и смотрите там картинку):
  * https://en.wikipedia.org/wiki/Baseline_(typography)
  *
  * Точка отсчёта системы координат [0, 0] — это самая левая точка baseline.
  * Далее кординаты увеличиваются вниз и вправо.
  * В описанном выше примере нижняя координата Y имеет значение 4:
  * это значит, что самая нижняя точка текста расположена на 4 пикселя ниже baseline.
  * Верхяя координата Y имеет значение -16:
  * это значит, что самая верхняя точка текста расположена на 16 пикселей выше baseline.
  *
  * Почему левая координата X получилась отрицательной?
  * Видимо, из-за левой засечки первой буквы текста «A».
  *
  * @param int|null $index [optional]
  * @return int|int[]
  * @throws \Exception
  */
 private function box($index = null)
 {
     if (!isset($this->{__METHOD__})) {
         try {
             /** @var int[] $box */
             $this->{__METHOD__} = imagettfbbox($this->fontSize(), 0, $this->ttfPath(), $this->text());
             df_assert(false !== $this->{__METHOD__});
         } catch (\Exception $e) {
             throw new \Exception("Unable to load the TTF file for the font" . " «{$this->family()} ({$this->variant()->name()})»: «{$this->ttfPath()}»." . "\n" . $e->getMessage(), 0, $e);
         }
     }
     return is_null($index) ? $this->{__METHOD__} : $this->{__METHOD__}[$index];
 }
Пример #30
0
/**
 * 2016-05-20
 * Возвращает страну по её 2-буквенному коду по стандарту ISO 3166-1 alpha-2.
 * https://ru.wikipedia.org/wiki/ISO_3166-1
 * @param string $iso2
 * @param bool $throw [optional]
 * @return C|null
 */
function df_country($iso2, $throw = true)
{
    return dfcf(function ($iso2, $throw = true) {
        /** @var C|null $result */
        $result = !df_check_iso2($iso2) ? null : df_countries()->getItemById($iso2);
        if ($result) {
            df_assert($result instanceof C);
        } else {
            if ($throw) {
                df_error('Не могу найти страну по 2-буквенному коду «%s».', $iso2);
            }
        }
        return $result;
    }, func_get_args());
}