在PHP中,抽象类中的构造函数有什么用途?

23

在提问之前,我已经跟着这个链接 - JAVA上下文中的答案PHP中的构造函数

由于我是一名初学者,在OOP概念中实现我的PHP代码,所以我真的想了解在PHP抽象类中使用构造函数的用途、好处或何时使用。

请提供一个真实世界中的示例,以更好地掌握概念。

PS - 虽然我正在遵循PHP手册来理解OOP概念,但我发现有点难以理解,如果有帮助链接/博客可供关注,将不胜感激。

我的代码 -

<?php

abstract class grandClass
{
    abstract function grandmethod();

    function __construct()
    {
        echo "I am grandClass constructor";
    }
}

abstract class parentClass extends grandClass
{
    abstract function raiseFlag();

    function grandmethod()
    {
        echo "This is grandmethod!!!","<br />";
    } 

    public function getValue()
    {
        echo "Zero is the blackhole for the numbers!!","<br />";
    }
}

class childClass extends parentClass
{

    function raiseFlag()
    {
        echo "Peaceful thoughts!!","<br />";
    }

}

$myobj = new childClass();
$myobj->raiseFlag();
$myobj->getValue();
$myobj->grandmethod(); 
1个回答

53

抽象类中的构造函数与具体类中的构造函数相同。在需要时使用构造函数,例如,如果您需要初始化一些数据或分配一些资源。

我将给您一个例子:

abstract class Db
{
    protected $pdo;

    public function __construct($pdo)
    {
        $this->pdo = $pdo;
    }

    abstract function select($table, $fields);
}

class Db_Mysql extends Db
{
    public function select($table, $fields)
    {
        // Build MySQL specific select query
        // then execute it with $this->pdo
    }
}

class Db_Pgsql extends Db
{
    public function select($table, $fields)
    {
        // Build PostgreSQL specific select query
        // then execute it with $this->pdo
    }
}

// Usage:
$db = new Db_Mysql($pdo);

$db->select('users', array('id', 'name'));

你能否添加更多的文本以便更好地理解?虽然我问了抽象类中构造函数的用法,但是何时使用和何时不使用呢?附上代码+1 :) - swapnesh
请查看我的更新答案,同时修改了代码以便更好地理解。 - Lauris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接