[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как передать свойство класса в метод?
Arcoslov
Всем привет.

Подскажите, почему не работает?
class my1 {
private static $a1='это a1';

public function f1 ($param=self::$a1){
echo $param;
}
}


$obj1=new my1;
$obj1->f1();


На строчке, где в функцию передаётся параметр по умолчанию, выводится ошибка:
Цитата
Parse error: syntax error, unexpected '$a1' (T_VARIABLE), expecting identifier (T_STRING) or class (T_CLASS) in ....


Если сделать переменную a1 константой, и передавать её как self::a1, то всё будет работать.
AllesKlar
Передать, как аргумент - никак.
https://php.net/manual/ru/functions.arguments.php

Свойство класса передавать в методы не нужно, оно и так доступно напрямую из метода.

_____________
[продано копирайтерам]
johniek_comp
class my1 {
private static $a1='это a1';

public function f1 ($param = null){
$param = is_null($param) ? self::$a1 : $param;
echo $param;
}
}


$obj1=new my1;
$obj1->f1();


поправьте плз как правильно
self::$a1 

или
self::a1


_____________
user posted image
Arcoslov
Цитата (AllesKlar @ 27.01.2015 - 19:33)
Передать, как аргумент - никак.
https://php.net/manual/ru/functions.arguments.php

Свойство класса передавать в методы не нужно, оно и так доступно напрямую из метода.

Я имею в виду, что у нас аргумент может быть передан либо на вход функции, либо назначен по-умолчанию. Я хочу, чтобы, в случае, если он в вызове функции не назначен, то приобретал значение статической переменной класса.
Arcoslov
Цитата (johniek_comp @ 27.01.2015 - 19:44)
class my1 {
private static $a1='это a1';

public function f1 ($param = null){
                $param = is_null($param) ? self::$a1 : $param;
  echo $param;
}
}


$obj1=new my1;
$obj1->f1();


поправьте плз как правильно
self::$a1 

или
self::a1

Если у тебя a1 это константа класса, определённая как "const a1", то верно будет self::a1.
А если эт оне константа, а просто переменная (как в твоём случае), то верно будет self::$a1.

Короче, твой код работает. ;)
AllesKlar
Arcoslov
ну ты в мануал по ссылке ходил? Там жирным текстом выделено: Значения аргументов по умолчанию


_____________
[продано копирайтерам]
Arcoslov
Цитата (AllesKlar @ 27.01.2015 - 21:40)
Arcoslov
ну ты в мануал по ссылке ходил? Там жирным текстом выделено: Значения аргументов по умолчанию

Не понимаю, что ты хочешь этим сказать?

Я по ссылке ходил, да и ты сказал, что нельзя так сделать.
Быстрый ответ:

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