Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中抽象类中构造函数的用途是什么_Php_Oop_Constructor_Abstract Class - Fatal编程技术网

php中抽象类中构造函数的用途是什么

php中抽象类中构造函数的用途是什么,php,oop,constructor,abstract-class,Php,Oop,Constructor,Abstract Class,在询问之前,我已经关注了这个链接——这也是我的目的 因为我是初学者,我在OOP概念中实现了我的PHP代码,所以我非常愿意了解PHP抽象类的用法和好处,或者何时使用构造函数 请在现实世界中提供一个例子,以便更好地理解这个概念 PS-虽然我在下面了解OOP的概念,但我发现这有点难理解,任何关于链接/博客的帮助都是值得的 我的代码- <?php abstract class grandClass { abstract function grandmethod(); funct

在询问之前,我已经关注了这个链接——这也是我的目的

因为我是初学者,我在OOP概念中实现了我的PHP代码,所以我非常愿意了解PHP抽象类的用法和好处,或者何时使用构造函数

请在现实世界中提供一个例子,以便更好地理解这个概念

PS-虽然我在下面了解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(); 

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

我给你举个例子:

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'));

虽然我问过抽象类中构造函数的用法…何时使用rto,何时不使用..+1的代码:)请看我更新的答案,也修改了代码以更好地理解。