2015-02-10 2 views
-1

Возможно ли определить константу php-массива в классе с функцией?определение значения константы php с помощью функции в классе

редактировать: "PHP массив переменных" не постоянны

Я пробовал:

предположить, массив FUNC (строка param1, строка param2 ...);

class A{ 

    public static $const; 

    public function blah(){ 
     self::$const = func('a','b','c',...); 
    } 
} 

отладчик в возвышенных шоу нет значения для $ сопзЬ после точки разрыва в собственной :: $ сопзЬ линии

+1

_ «Определить константу с функцией» - разве это не оксюморон? –

+1

@HoboSapiens это не так. Для того, что-то постоянное означает, что оно является неизменным, а не необходимым, оно определяется во время компиляции. – zerkms

+0

См. Http://stackoverflow.com/questions/1290318/php-constants-containing-arrays –

ответ

0

В PHP < 5.6 вы не можете иметь массивы в качестве констант.

Если вы хотите, чтобы вернуть константу с помощью функции, вы бы просто сделать:

define('FOO', 'bar') 

function getFoo() { 
    return FOO; 
} 

но это не возвращает массив, и это довольно глупый пример.

Я думаю, что вы действительно хотите сделать, это вернуть массив из статического метода класса за что-то вроде:

class Foo { 
    public static function GetFoo() { 
    return array(1, 2, 3); 
    } 
} 

Foo::GetFoo(); 

или если вы хотите, чтобы запустить функцию как метод экземпляра объекта, вы не ставите статическое свойство (это не имеет смысла для меня).

class Foo { 
    private $foo = array(); 

    public function getFoo($arg1, $arg2) { // not sure what your arguments are for if this is intended to be a "constant"... 
    $this->foo = array(...) 
    return $this->foo 
    } 
} 

$someFoo = new Foo(); 
$someFoo->getFoo(1, 2); 

Помогает ли это вообще? Многочисленные примеры в PHP Constants Containing Arrays? также должны помочь.

+0

, если я должен был использовать массив из вашего второго метода в другой публичной статической функции, мог бы я получить к нему доступ как $ this-> GetFoo [index]? – marvelownz

+0

Ну, похоже, в этом случае это действительно синглтон, а не постоянный, так что не хотите ли вы определить свой синглтон и просто сохранить его для любых методов? –

Смежные вопросы