Я новичок в литиевом PHP и знаю основы лития. Я хочу реализовать свои собственные функции Utility
. Я создал папку utilities
, параллельную app\controllers
. Это как мой класс выглядит следующим образом:Реализация моих собственных функций полезности в литии?
<?php
namespace app\utilities;
class UtilityFunctions {
protected $_items = array(
'a' => 'Apple',
'b' => 'Ball',
'c' => 'Cat'
);
//I get _items as undefined here, blame my poor OOP skills.
public function getItem(alphabet) {
return $this->_items[alphabet];
}
}
?>
Я использую его в моем контроллере, как:
<?php
namespace app\controllers;
use \app\utilities\UtilityFunctions;
class MyController extends \lithium\action\Controller {
public function index() {
$args = func_get_args();
$item = UtilityFunctions::getItem($args[0]);
return compact('item');
}
}
?>
Является ли это правильный способ сделать это? Должен ли мой класс полезности расширять что-то? Или литий обеспечивает какой-то другой способ достичь этого?
Кроме того, я не могу получить доступ к защищенной переменной $_items
в моем методе getItems
. У меня было то же самое, что было реализовано в моем контроллере, и тогда он работал нормально.
Просто добавьте к тому, что сказал rmarscher, @ Rutwick Gangurde - вы должны рассмотреть возможность расширения от StaticObject и Object, как указал rmarscher. Вы можете сделать довольно классные вещи с фильтрами в li3 (Google). Кроме того, рассмотрите использование PHP-признаков для вашего варианта использования. – Housni
Спасибо rmarscher и @housni. Это была опечатка, делавшая много JavaScript в эти дни, поэтому забыла знак $. Я выполнил второй подход, создав экземпляр класса. Я прочитаю больше о ключевом слове static. –