PHP,无法在数组中找到对象的功能

时间:2015-01-16 16:25:31

标签: php arrays oop fatal-error

我正在为摄影师建立一个网页,这个页面包含一堆画廊。

我已将我的页面连接到数据库,我可以从数据库返回我需要的所有内容并将其放在Gallery对象中。

问题在于:
网页应该能够加载所有图库并为每个图库创建一个Gallery对象。它应该将它放在一个名为galleries的数组中(这部分工作正常)。

接下来,我想通过getter从对象获取数据,但是当我尝试这个时,我收到以下错误:

  

致命错误:调用未定义的函数getTitle()   第21行的C:\ xampp \ htdocs \ index.php

我现在陷入困境,是否有人有解决方案?

顺便说一句,这是我的代码:

的index.php

<?php

    // REQUIRED FILES

    require_once('PHPclasses/database.class.php');


    $database = new Database('localhost','root','','localdatabase');

    include('PHPclasses/gallery.class.php');

    $results = $database->doQuery("SELECT * FROM gallery");

    $galleries = array();

    for($i = 0; $i < count($results); $i++) {
        $galleries[$i] = new Gallery($i+1, $database);
    }

    foreach($galleries as $gallery) {
        $gallery.getTitle();
    }
?>

database.class.php

<?php

/*
 * This class contains the connection with the database.
 *
 * The database connection will be made when instantiating a new database object via 'new Database()'.
 * This is done by providing the 4 parameters:
 *      - server host
 *      - database user
 *      - database password
 *      - database name
 *
 * The database object can be used to input a query via the doQuery method.
 * This method needs the SQL query as a String, It will return an 2D array, being filled with result index as first 
 *      and the database-table contents s second.
 */

class Database 
{
    // Database connection variables
    private $serverhost;
    private $username;
    private $password;
    private $database;

    // Database connection itself
    private $db_link;

    // Query results
    private $resultsArray;

    public function __construct($host, $user, $pass, $db) {

        $this->serverhost = $host;
        $this->username = $user;
        $this->password = $pass;
        $this->database = $db;

        // Create connection
        $this->db_link = new mysqli(
                $this->serverhost,
                $this->username,
                $this->password,
                $this->database
        );

        // Check for errors in connection
        if ($this->db_link->connect_error) {
            die("Connection failed: " . $this->db_link->connect_error);
        }
    }

    public function doQuery($query){
        $q = $this->db_link->query($query)
            or die("Error: ".mysqli_error($this->db_link));

        $i = 0;
        $resultsArray = array();

        while($row = mysqli_fetch_array( $q )) { 
            $resultsArray[$i] = $row;
            $i++;
        }

        return $resultsArray;   
    }
}

?>

最后但并非最不重要 gallery.class.php

<?php

/*
 * This class contains the Gallery
 *
 * The gallery object is one instance of the complete gallery. 
 * The ID given in the constructor is the ID within the database,
 * 
 * This row in the database contains all the properties for each object of gallery
 *
 * All properties set in the constructor can later be obtained via the getters.
 */

class Gallery
{

    // location of the gallery folder
    private $root;

    // descriptive variables
    private $title;
    private $description;
    private $thumb;
    private $genre;
    private $day;

    /**
     * Constructor if this class
     * 
     * Takes in an identifier which should be the ID of the gallery in the database
     *      and an database object, which should be the database which stores all the data
     */
    public function __construct($galleryIdentifier, $database) {
        $result = $database->doQuery("SELECT * FROM  `gallery` WHERE `galleryID` = '{$galleryIdentifier}'");

        $this->root = $result[0]["galleryRoot"];

        $this->title = $result[0]["title"];
        $this->description = $result[0]["description"];
        $this->thumb = $result[0]["galleryThumb"];
        $this->genre = $result[0]["genre"];
        $this->day = $result[0]["galleryRoot"];
    }

    // list of getters (start)
    public function getRoot() {
        return $this->root;
    }
    public function getTitle() {
        return $this->title;
    }
    public function getDescription() {
        return $this->description;
    }
    public function getThumb() {
        return $this->thumb;
    }
    public function getGenre() {
        return $this->genre;
    }
    public function getDate() {
        return $this->day;
    }
    // list of getters (end)
}

?>

1 个答案:

答案 0 :(得分:2)

你打错了。 修复您的方法调用

$gallery->getTitle();