抽象类

时间:2018-04-14 14:47:11

标签: php pdo

大家好,这是我在这个着名且有用的网站上的第一个问题。 我是PDO和对象php的新手。 我也是法国人,所以我的英语并不完美。

这是一个简单的代码,但它不起作用。它有什么问题?

Model.php

require_once('config.php');

abstract class Model
{
    protected static $db = null;

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

    private function connexion()
    {
        $db_options = array(
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
        );

        if(is_null(self::$db))
        {
            try
            {
                self::$db = new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $db_options);
            }
            catch (PDOException $e)
            {
                die("Erreur de connexion : " . $e->getMessage());
            }
        }
    }
}

homeModel.php

require_once('Model.php');

class HomeModel extends Model
{
    private $title;

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

    private function getTitle()
    {
        $sql = parent::$db->query("SELECT title FROM table");

        $sql->execute();

        $sql->fetchAll();

        $sql->closeCursor();
    }
}

在继承类中执行公共函数parent :: __ construct()时,我有这样的错误:解析错误:语法错误,意外' ::' (T_PAAMAYIM_NEKUDOTAYIM),期待'('在HomeModel.php第10行

我将构造函数视为默认操作。因此,当子类调用主类时,我希望主类自动执行构造函数中定义的操作。

1 个答案:

答案 0 :(得分:0)

你需要$ this-> getTitle();到物业

$this->title = $this->getTitle();

也像提到的那样调用父构造函数

parent::__construct();
$this->title = $this->getTitle();