PHP 5.3.0 USE ключевое слово - как сделать бэкпорт в 5.2? - PullRequest
8 голосов
/ 03 мая 2011

У меня есть некоторый код, который был написан для php 5.3.0 с использованием функции USE в PHP

Может кто-нибудь помочь мне изменить это на работу для 5.2.9?

$available  = array_filter($objects, function ($object) use ($week) { 
    return !in_array($object, $week);
});

спасибо за помощь

Ответы [ 4 ]

8 голосов
/ 03 мая 2011

Не приятно, но это будет эквивалентная реализация.

class MyWeekFilter {
    protected $_week;

    public function __construct($week) {
        $this->_week = $week;
    }

    public function filter($object) {
        return !in_array($object, $this->_week);
    }
}

$filter    = new MyWeekFilter($week);
$available = array_filter($objects, array($filter, 'filter'));
1 голос
/ 03 мая 2011

Есть ли разница между авторским кодом

$available = array_filter($objects, function ($object) use ($week) { 
    return !in_array($object, $week);
});

и

$available = array_diff($objects, $week);

0 голосов
/ 01 июня 2012
$available  = array_filter($objects, create_function('$object', '
    $week = '.var_export($week,true).';
    return !in_array($object, $week);
'));
0 голосов
/ 03 мая 2011

Попробуйте это:

$week = array(...); // defined and instantiated before...

function callback($object) {
    return !in_array($object, $week);
}
$available  = array_filter($objects, "callback");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...