Класс работает без объявления переменных?

Я изучил php как функциональный и процедурный язык. Прямо сейчас попробуйте начать объективно ориентироваться и получить важный вопрос.

У меня есть код:

class car { function set_car($model) { $this->model = $model; } function check_model() { if($this->model == "Mercedes") echo "Good car"; } } $mycar = new car; $mycar->set_car("Mercedes"); echo $mycar->check_model(); 

Почему он работает без объявления $ model?

var $model; в начале?

Потому что в php работает «авто-декларация» для любых переменных? Я застрял

Solutions Collecting From Web of "Класс работает без объявления переменных?"

Каждый объект в PHP может получить участников без объявления их:

 $mycar = new car; $mycar->model = "Mercedes"; echo $mycar->check_model(); # Good car 

Это поведение PHP по умолчанию. Это публично. См. Руководство .

Да, если он не существует, PHP объявляет его «на лету» для вас.

В любом случае это более элегантно, и при работе с extends это рекомендуется, потому что вы можете получить странные ситуации, если ваши расширения будут использовать одни и те же имена, а также не будут определять его как закрытые, защищенные, так и общедоступные.

Дополнительная информация: http://www.php.net/manual/en/language.oop5.visibility.php

Члены класса PHP могут быть созданы в любое время. Таким образом, это будет рассматриваться как общедоступная переменная. Чтобы объявить приватную переменную, вам нужно объявить ее.

Нет, это потому, что $ model является аргументом функции set_car. Аргументы не являются точно переменными, а заполнителями (ссылками) к переменным или значениям, которые будут установлены при вызове функции (или метода класса). Например, модель $ принимает значение «Мерседес» при вызове set_car.

Да. Но таким образом переменные будут публичными. А переменная класса объявления как «var» устарела – использовать общедоступную, защищенную или приватную.