Синтаксис — PHP устарел код с фигурными скобками — нет документации об этом?

На сервере PHP 5.2 этот код работал, но он больше не работает под 5.6:

$value = $record->{self::TABLE_METHOD}();

Под 5.6 я должен был сделать это:

$abc=self::TABLE_METHOD;
$value = $record->{$abc}();

Иначе говоря, он работает с использованием «self :: TABLE_METHOD» через переменную, но не в фигурных скобках.

Любая помощь в том, почему это происходит, будет высоко ценится!

По запросу это «реальный» код:

class TActiveRecordGateway extends TComponent
{
private $_manager;
private $_tables=array(); //table cache
private $_meta=array(); //meta data cache.
private $_commandBuilders=array();
private $_currentRecord;

/**
* Constant name for specifying optional table name in TActiveRecord.
*/
const TABLE_CONST='TABLE';
/**
* Method name for returning optional table name in in TActiveRecord
*/
const TABLE_METHOD='table';

/**
* Record gateway constructor.
* @param TActiveRecordManager $manager
*/
public function __construct(TActiveRecordManager $manager)
{
$this->_manager=$manager;
}

/**
* @return TActiveRecordManager record manager.
*/
protected function getManager()
{
return $this->_manager;
}
/**
* Gets the table name from the 'TABLE' constant of the active record
* class if defined, otherwise use the class name as table name.
* @param TActiveRecord active record instance
* @return string table name for the given record class.
*/
protected function getRecordTableName(TActiveRecord $record)
{

$class = new ReflectionClass($record);

if($class->hasConstant(self::TABLE_CONST))
{
$value = $class->getConstant(self::TABLE_CONST);
if(empty($value))
throw new TActiveRecordException('ar_invalid_tablename_property',
get_class($record),self::TABLE_CONST);
return $value;
}
elseif ($class->hasMethod(self::TABLE_METHOD))
{
$value = $record->{self::TABLE_METHOD}();
# THE PROBLEM HAPPENS HERE : $value is empty

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]