Stasonix
16.06.2013 - 11:45
Конструкция
$current_page = isset($this->request->param('page')) ? $this->request->param('page') : 1;
Выдает ошибку:
Fatal error: Can't use method return value in write context in controllerКак можно изменить тернарный оператор, не прибегая к помощи доп. переменных чтобы этой ошибки не возникало?
Мне просто интересно.
Michael
16.06.2013 - 12:25
isset используется с переменными и ключами массива.
А не с возвращаемыми данными из методов.
Тебе тут он и не нужен.
Вон я кохану не разу не смотрел, заглянул в
api, там есть $default = NULL, который и вернется.
_____________
There never was a struggle in the soul of a good man that was not hard
$p= $this->request->param('page');
$current_page = !empty($p) ? (int) $p : 1;
_____________
Заработок для веб-разработчиков: CodeCanyon Мое
Портфолио
T1grOK
16.06.2013 - 12:40
Цитата (Stasonix @ 16.06.2013 - 07:45) |
Как можно изменить тернарный оператор, не прибегая к помощи доп. переменных чтобы этой ошибки не возникало? |
Никак.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Stasonix
16.06.2013 - 13:13
Цитата (T1grOK @ 16.06.2013 - 08:40) |
Цитата (Stasonix @ 16.06.2013 - 07:45) | Как можно изменить тернарный оператор, не прибегая к помощи доп. переменных чтобы этой ошибки не возникало? |
Никак.
|
Как же "Никак", если как мне сказали выше $this->request->param может вернуть
NULLВсе очень просто:
$current_page = (is_null($this->request->param('page'))) ? 1 : $this->request->param('page');
Invis1ble
16.06.2013 - 13:42
Цитата (Stasonix @ 16.06.2013 - 12:13) |
Цитата (T1grOK @ 16.06.2013 - 08:40) | Цитата (Stasonix @ 16.06.2013 - 07:45) | Как можно изменить тернарный оператор, не прибегая к помощи доп. переменных чтобы этой ошибки не возникало? |
Никак.
|
Как же "Никак", если как мне сказали выше $this->request->param может вернуть NULLВсе очень просто: $current_page = (is_null($this->request->param('page'))) ? 1 : $this->request->param('page'); |
бугага, ты даже не понял, о чем тебе говорили, когда упоминали про NULL :lol:
$current_page = $this->request->param('page', 1);
не нужно благодарностей
PS. Кстати, конкретно данная задача решается с помощью указания дефолтного значения параметра для роутера, а не такими велосипедами.
Route::set('routename', 'path(/<page>)', array(
'page' => '\d+',
))
->defaults(array(
'controller' => 'Somecontroller',
'action' => 'someaction',
'page' => 1,
));
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
T1grOK
16.06.2013 - 16:05
Цитата (Stasonix @ 16.06.2013 - 09:13) |
Как же "Никак", если как мне сказали выше $this->request->param может вернуть NULL
Все очень просто:
$current_page = (is_null($this->request->param('page'))) ? 1 : $this->request->param('page'); |
Вот от подобных конструкций и страдает производительность...Получается раз вызвали, чтоб узнать результат, который ушел в воздух, второй раз уже вызвали, чтоб результат присвоить переменной.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api