В чем разница между объектом и классом в PHP? Я спрашиваю, потому что, я действительно не вижу смысла для них обоих.Разница между объектом и классом в PHP?
Не могли бы вы рассказать о разнице с хорошим примером?
В чем разница между объектом и классом в PHP? Я спрашиваю, потому что, я действительно не вижу смысла для них обоих.Разница между объектом и классом в PHP?
Не могли бы вы рассказать о разнице с хорошим примером?
Предполагаю, что у вас есть read the manual на базовом PHP OOP.
Класс, который вы используете для , определяет свойства, методы и поведение объектов. Объектами являются вещи, которые вы создаете вне класса. Подумайте о классе как о проекте , а в качестве фактического здания вы строите, следуя чертежу (классу). (Да, я знаю, что план/строительство аналогия была сделана до смерти.)
// Class
class MyClass {
public $var;
// Constructor
public function __construct($var) {
echo 'Created an object of MyClass';
$this->var = $var;
}
public function show_var() {
echo $this->var;
}
}
// Make an object
$objA = new MyClass('A');
// Call an object method to show the object's property
$objA->show_var();
// Make another object and do the same
$objB = new MyClass('B');
$objB->show_var();
Объектов здесь различны (А и В), но оба они являются объектами MyClass
класса. Возвращаясь к аналогии проекта/здания, подумайте об этом, используя тот же план, чтобы построить два разных здания.
Вот еще один отрывок, который на самом деле говорит о зданиях, если вам нужен более буквальный пример:
// Class
class Building {
// Object variables/properties
private $number_of_floors = 5; // Each building has 5 floors
private $color;
// Constructor
public function __construct($paint) {
$this->color = $paint;
}
public function describe() {
printf('This building has %d floors. It is %s in color.',
$this->number_of_floors,
$this->color
);
}
}
// Build a building and paint it red
$bldgA = new Building('red');
// Build another building and paint it blue
$bldgB = new Building('blue');
// Tell us how many floors these buildings have, and their painted color
$bldgA->describe();
$bldgB->describe();
PHP обрабатывает объекты так же, как ссылки или дескрипторы, что означает, что каждая переменная содержит ссылку на объект, а не копию всего объекта +1 – kjy112
+1 Очень хороший и педагогический пример! Начинающие часто путают класс и экземпляр (объект). –
У меня есть один вопрос, почему 'private $ number_of_floors = 5;' и 'private $ color;' называются 'Object variables/properties'? 'Public function __construct ($ paint)' называются конструкторами классов. Итак, почему не такие же, как «Конструктор классов», они называются «Переменная/свойства класса» вместо «Объектных переменных/свойств». – codenext
Классы необходимы в PHP, потому что следует старшую и более статическую ООП парадигмы. В [прототипных языках (JavaScript, Lua)] (http://en.wikipedia.org/wiki/Prototype-based_programming) вам действительно нужны только объекты. Поэтому путаница в необходимости занятий не является необоснованной. – mario