What is the use of constructor in abstract class in php

瘦欲@ 提交于 2020-01-01 04:33:09

问题


I followed this link already before asking - Answer is in JAVA context and this for constructor in PHP .

Since I am starter, my implementation of my PHP code in OOP concepts, so I am really willing to know about the usage and benefits or when to use constructor in PHP abstract class.

Please provide an example in real world context to grab the concept better.

PS - Although I am following PHP Manuals to understand OOP concepts but I am finding it little bit hard to understand, any help with the links/blog to follow is really appreciable.

My Code -

<?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:


Constructor in abstract class is the same as in concrete class. Use constructors when they are needed, for example, if you need to intialize some data or assign some resources.

I'll give you an example:

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


来源:https://stackoverflow.com/questions/14272598/what-is-the-use-of-constructor-in-abstract-class-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!