访问私有阵列

时间:2015-10-27 19:39:09

标签: php

作为一个oop-newbee我接受了我的极限。我拿了一个包含3个项目的现有示例。 我尝试将我的DB-Content附加到现有数组,但它不起作用。 我试着从App中的任何地方调用我的函数,但是我失败了。 要么我没有找到从开头填充数组的方法,因为private static $entries =不允许调用函数。

如何使用数据库中的数据填充数组?我怎样才能正确调用函数pushEntries?

class Model{

    private static $entries = array(
        array("id"=>0, "title"=>"Eintrag 1", "content"=>"Ich bin der erste Eintrag."),
        array("id"=>1, "title"=>"Eintrag 2", "content"=>"Ich bin der ewige Zweite!"),
        array("id"=>2, "title"=>"Eintrag 3", "content"=>"Na dann bin ich die Nummer drei.")
    );

    public static function pushEntries($layerid = 96) {
        require_once('/../pdo_dbconnect.php');
        $sqlAll = 'select beitrag.* from beitrag,menu where beitrag.seitenid = :layerid order by beitrag.sort'; 
        $stmt = $db->prepare($sqlAll);  
        $stmt->bindParam(':layerid', $layerid);
        $stmt->execute();
        while ($data = $stmt->fetch()) {
            $newdata = array ('id'=>$data['beitragid'],'title'=>$data['titel'],'content'=>$data['beitrag']);        
            $entries[] = $newdata;      
        }   
    }   
}

2 个答案:

答案 0 :(得分:2)

通过self::访问静态属性,因此您的代码应为:

self::$entries[] = $newdata;

您也可以跳过创建$newdata数组:

while ($data = $stmt->fetch()) {
    self::$entries[] = array(
        'id'=>$data['beitragid'],
        'title'=>$data['titel'],
        'content'=>$data['beitrag']
    );        
}   

答案 1 :(得分:1)

要访问静态属性和方法,可以使用范围解析运算符(::)。

从课堂外面你可以像这样调用public static function pushEntries

Model::pushEntries();

从班级内部,您可以像这样调用public static function pushEntries

self::pushEntries();

要将数据添加到private static $entries数组,您可以在while循环中使用self::$entries[] = $newdata;

有关static关键字的更多信息,请访问此页面:http://php.net/manual/en/language.oop5.static.php