[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тернарный оператор
Stasonix
Конструкция

$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
isset используется с переменными и ключами массива.
А не с возвращаемыми данными из методов.
Тебе тут он и не нужен.
Вон я кохану не разу не смотрел, заглянул в api, там есть $default = NULL, который и вернется.

_____________
There never was a struggle in the soul of a good man that was not hard
forza
$p= $this->request->param('page');
$current_page = !empty($p) ? (int) $p : 1;


_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
T1grOK
Цитата (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
Цитата (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
Цитата (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
Цитата (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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.