创建一个新类,并根据从数据库中提取的数据调用该类


Creating a new class and calling the class from data pulled from database

我有一个名为page的类,它从数据库中提取当前页面的所有数据。当加载当前页面信息时,我需要调用新类并从页面的类中显示show body函数。示例代码…

<?php
//page class
class Page{
    var $p;
    var $pageline = array();
    function __construct(){
        global $_GET;
        if(!isset($_GET['p'])){
            $this->p = 'home';
        }
        else{
            $this->p = mysql_real_escape_string($_GET['p']);
            $sql = "select * from pages where friendurl = '{$this->p}'";
            if(mysql_query($sql)){
                $page = mysql_fetch_assoc(mysql_query($sql));
                $this->p = $page['id'];
                foreach($page as $key => $val){
                    if(!is_int($key)){
                        $this->pageline[$key] = $val;
                    }
                }
            }
            else{
                return false;
            }           
        }
    }
}
?>

所以我有var $pageline充满了来自数据库的当前页面的所有信息。我有一个叫做pageClass

的列

在主页上,我需要调用这个类并调用showBody函数。

我试了这个,也试了其他方法,但都无法解决。

<?php
$bodyClass = $Page->pageline['friendurl'];
//echo $bodyClass;
$bodyClass->showBody();
?>  

这是我一直得到的错误!致命错误:在第136行***************中的非对象上调用成员函数showBody() **

它是一个函数,也是一个对象

请帮忙!

  1. 为您的属性设置一个作用域,如public, privateprotected
  2. 不要再使用mysql_*函数了,因为它们已经被弃用了。使用PDOmysqli_*代替。不要在构造函数中加载页面数据。创建一个类Page,它只包含页面数据和一些页面逻辑,创建一个类PageModel,它从DB加载数据并生成Page的实例。
  3. 你调用一个方法showBody(),它没有在你的类Page中定义。