Как объединить глобальные константы и строки в модели $ actAs массивы в CakePHP 2.6?Конкатенация констант и строк в переменных открытого класса CakePHP
У меня есть плагин для загрузки файлов, которому нужны пути к каталогам, которые передаются ему через конфигурацию $ actAs, но хотя это позволяет мне просто использовать глобальную константу ИЛИ строку как значение ключа массива, она не позволяет мне объединить два вместе. Это проблема, потому что теоретически мое приложение может жить в различных средах, где путь к приложению отличается, и я бы предпочел не иметь это жестко закодированное и вместо этого использовать путь относительно глобальной константы ROOT
.
Мне кажется, что я сталкиваюсь с ограничением PHP. Какие хорошие решения для этого? Идеи, ориентированные на торт/Cake-friendly, являются плюсом.
Что работает:
// Import.php
public $actsAs = array(
'Uploader.Attachment' => array(
'filename' => array(
// You can use a global constant by itself:
'tempDir' => TMP,
'uploadDir' =>
// Using a full string works, too.
'/var/www/vhosts/hostname/app/webroot/file/imports',
//
'finalPath' => '/file/imports/',
'nameCallback' => 'nameCallback',
'overwrite' => false,
),
),
);
То, что я хотел бы работать, но не работает. Вместо конкатенации, я получаю "неожиданный ''" ошибка:
public $actsAs = array(
'Uploader.Attachment' => array(
'filename' => array(
'tempDir' => TMP,
// Concatenation of the two results in an "unexpected ." error:
// ROOT being '/var/www/vhosts/hostname/'
'uploadDir' => ROOT . '/app/webroot/file/imports',
//
'finalPath' => '/file/imports/',
'nameCallback' => 'nameCallback',
'overwrite' => false,
),
),
);
возможный дубликат [Конкатенация \ _ \ _ DIR \ _ \ _ постоянная с строкой как значением массива, которая является членом класса в PHP] (http://stackoverflow.com/questions/8759905/concatenating-dir-constant-with-a-string-as-an-array-value-which- is-a-class) – ndm
Также http://stackoverflow.com/a/22377621/1392379 – ndm