__Construct在OOP类中?

时间:2013-03-29 01:36:05

标签: php oop

我对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类中的优先级?

2 个答案:

答案 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的“即发即忘”特性,它们并没有经常使用。它们可能用于在长时间运行的脚本中释放资源(数据库连接,文件句柄)。