我对PHP5的OOP风格很新,我注意到示例类和生产类中的__construct
和__deconstruct
。
我已阅读过本手册:
http://php.net/manual/en/language.oop5.decon.php
并查看了StackOverflow上的一系列问题/答案。我仍然无法理解其存在的实际含义是什么?
class foo {
function __construct()
{
// do something
}
public function Example ()
{
echo "Example Functions";
}
function __destruct()
{
// do something
}
}
同一个类的功能相同,没有命中:
class foo {
public function Example ()
{
echo "Example Functions";
}
}
但是手册陈述了上面的例子,我的第一个函数将接替__construct
为什么这是PHP5 OOP类中的优先级?
答案 0 :(得分:1)
class Foo {
public function __construct() {
print("This is called when a new object is created");
// Good to use when you need to set initial values,
// (possibly) create a connection to a database or such.
}
public function __destruct() {
print("This is called when the class is removed from memory.");
// Should be used to clean up after yourself, close connections and such.
}
}
$foo = new Foo();
<强>加,强>
class Person {
private $name; // Instance variable
private $status; // Instance variable
// This will be called when a new instance of this class i created (constructed)
public function __construct($name, $age) {
$this->name = ucfirst($name); // Change input to first letter uppercase.
// Let the user of our class input something he is familiar with,
// then let the constructor take care of that data in order to fit
// our specific needs.
if ($age < 20) {
$this->status = 'Young';
} else {
$this->status = 'Old';
}
}
public function printName() {
print($this->name);
}
public function printStatus() {
print($this->status);
}
}
$Alice = new Person('alice', 27);
$Alice->printName();
$Alice->printStatus();
<强> /添加强>
如果运行上面的代码并阅读注释,您应该能够理解何时以及如何使用构造函数和析构函数。
答案 1 :(得分:0)
您需要意识到类定义了类型,这意味着一种数据和可以对该数据执行的操作。该数据在内部存储为成员变量。同样,这些操作由类的方法定义。构造函数用于初始化对象的初始内部状态(即其成员变量和任何内部操作)。
PHP中的析构函数通常用于手动对象清理。由于PHP的“即发即忘”特性,它们并没有经常使用。它们可能用于在长时间运行的脚本中释放资源(数据库连接,文件句柄)。