【发布时间】:2011-01-29 14:52:45
【问题描述】:
PHP中的对象和类有什么区别?我问是因为,我真的不明白他们俩的意义。
你能用一个好例子告诉我区别吗?
【问题讨论】:
-
类在 PHP 中是必需的,因为它遵循较旧且更静态的 OOP 范例。在prototype-based languages (JavaScript, Lua) 中,您实际上只需要对象。因此,对课程需求的困惑并非没有道理。
PHP中的对象和类有什么区别?我问是因为,我真的不明白他们俩的意义。
你能用一个好例子告诉我区别吗?
【问题讨论】:
我假设您在基本的 PHP OOP 上有 read the manual。
类是您用来定义对象的属性、方法和行为的对象。对象是你从一个类中创建的东西。将类视为蓝图,将对象视为您按照蓝图(类)构建的实际建筑物。 (是的,我知道蓝图/建筑类比已经被做死了。)
// 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();
这里的对象是不同的(A 和 B),但它们都是 MyClass 类的对象。回到蓝图/建筑的类比,把它想象成使用相同的蓝图来建造两座不同的建筑。
如果您需要一个更字面的例子,这里还有一个实际谈论建筑物的 sn-p:
// 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();
【讨论】:
private $number_of_floors = 5; 和private $color; 被称为Object variables/properties? public function __construct($paint) 称为 Class constructor。那么,为什么不与Class constructor 相同,它们被称为Class variable/properties 而不是Object variables/properties。
对于新开发者:
类
类是方法和变量的集合
class Test{
const t = "OK";
var $Test;
function TestFunction(){
}
}
对象
Object 是一个类的实例(当你想使用你的类和你创建的东西时)
$test = new Test();
$test->TestFunction();//so here you can call to your class' function through the instance(Object)
【讨论】:
类是包含结构和行为的组定义,对象是任何具有结构和行为的东西。对象是一个类的实例,我们可以创建同一个类的多个对象。
【讨论】: