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

时间:2014-07-01 07:19:30

标签: php class

我有一个名为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的coloumn

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

我尝试了这个,并尝试了其他方法,但无法弄明白。

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

?>  

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

这是一个功能,它是一个对象

请帮助!

1 个答案:

答案 0 :(得分:0)

  1. 为您的属性使用范围,例如publicprivateprotected
  2. 不再使用mysql_*函数,因为它们已被弃用。请改用PDOmysqli_*
  3. 不要在构造函数中加载页面数据。创建一个只包含页面数据和一些页面逻辑的类Page,并创建一个类PageModel,它从数据库加载数据并生成Page的实例。
  4. 您调用的方法showBody()未在班级Page中定义。