Вот что я хочу сделать:
class Contacts {
private $_plural = 'contacts';
private $_single = 'contact';
private $_factory = 'contactfactory';
private $_model = 'contact_model';
private $_idname = $_plural . "Id";
function a($$_idname = 0) {
}
}
Эти две строки:
private $_idname = $_plural . "Id";
а также
function a ($$_idname = 0) {
не работают Зачем? И как я могу это исправить?
РЕДАКТИРОВАТЬ
Об аргументе функции:
Если $ _idname = «contactId», я хочу, чтобы аргумент был $ contactId. Вот почему у меня там два знака доллара. Возможно, это не правильный способ справиться с этим, но это то, чего я хочу достичь.
Вы могли бы изменить
private $_idname = $_plural . "Id";
в
private $_idname;
public function __construct(){
$this->_idname = $this->_plural.'Id';
}
первый.
Не видя достаточно в function a
, Наверное, больше похоже на:
public function a($really = 'What is the point of those underscores?'){
${$this->_idname} = $really; // local $contacts var holds $really
}
Я действительно предполагаю, что вы хотите иметь метод, который автоматически изменит ваше экземплярное свойство Object. Вам не нужна переменная переменная для этого. Если вы хотите повлиять на переменную, которую вы передаете в качестве аргумента, это &$yourVar
, Нет необходимости передавать свойство экземпляра Object в его собственный метод, поскольку у вас уже есть доступ к нему в методе с $this->yourVar
,
В соответствии с PHP документация, Вы должны инициализировать атрибут класса с постоянным значением:
Эта декларация может включать инициализацию, но эта инициализация должно быть постоянным значением—то есть он должен быть в состоянии быть оцененным во время компиляции и не должен зависеть от информации времени выполнения для оценки.
Исправление для этого будет использовать конструктор класса:
function __construct() {
$this->_idname = $this->_plural . "Id";
}
Кроме того, вы не можете использовать динамическая переменная имена функций или методов:
Обратите внимание, что переменные переменные нельзя использовать с массивами PHP Superglobal внутри функций или методов класса. Переменная $ this также является специальной переменной, на которую нельзя ссылаться динамически.