/** * 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; }
/** * @param string $propertyName * @param string $cacheKey * @return void */ private function cacheLoadProperty($propertyName, $cacheKey) { $cacheKey = $cacheKey . $propertyName; /** @var string|bool $propertyValueSerialized */ $propertyValueSerialized = df_cache_load($cacheKey); if ($propertyValueSerialized) { /** @var mixed $propertyValue */ /** * Обратите внимание, * что @see json_decode() в случае невозможности деколирования возвращает NULL, * а @see unserialize в случае невозможности деколирования возвращает FALSE. */ $propertyValue = isset($this->_cachedPropertiesSimpleMap[$propertyName]) ? df_unserialize_simple($propertyValueSerialized) : df_ftn(df_unserialize($propertyValueSerialized)); if (!is_null($propertyValue)) { $this->_cachedPropertiesLoaded[$propertyName] = true; $this->{$propertyName} = $propertyValue; } } }
/** * Этот метод отличается от родительского * только возвращением null вместо false в случае отсутствия значения. * * Обратите внимание, что мы можем так делать, * потому что родительский класс сам внутри себя не использует метод descend * (и, соответственно, не полагается на возвращение значения false). * * Обратите внимание, что интерпретатор PHP не разрешает * присваивать полям объектов класса CX (и его наследников) * значения сложных типов. * Такое присваивание приводит к сбою: * «Warning: It is not yet possible to assign complex types to attributes». * * По этой причине не используем кэширование результата. * * в комментарии к свойству @see \Magento\Framework\Simplexml\Element::$_parent * дана рекомендация использования функции @see spl_object_hash(), * однако это слишком сложно и необчевидно, ускорит ли работу системы * (также могут быть проблемы с расходом оперативной памяти). * * @override * @param string|string[] $path * @return X|null */ public function descend($path) { return df_ftn(parent::descend($path)); }
/** * 2015-11-03 * @param $table * @param string $cSelect * @param array(string => string) $cCompare * @return string|null */ function df_fetch_one($table, $cSelect, $cCompare) { /** @var Select $select */ $select = df_db_from($table, $cSelect); foreach ($cCompare as $column => $value) { /** @var string $column */ /** @var string $value */ $select->where('? = ' . $column, $value); } /** * 2016-03-01 * @uses \Zend_Db_Adapter_Abstract::fetchOne() возвращает false при пустом результате запроса. * https://mage2.pro/t/853 */ return df_ftn(df_conn()->fetchOne($select)); }
/** * 2016-11-30 * Наивное $e->getParentBlock()->getNameInLayout() некорректно, * потому что родительским элементом для $e может быть не только блок, * но и контейнер, и тогда $e->getParentBlock() вернёт false. * @param AbstractBlock|string $e * @return string|null */ function df_parent_name($e) { return df_ftn(df_layout()->getParentName($e instanceof AbstractBlock ? $e->getNameInLayout() : $e)); }