问题的最新更新
我不是类'BlogPost'来访问已在main.php页面上设置的父类变量
class BlogPage {
public $PageExists = false;
public $PageTitle = "no title";
public $PageId = "0";
function __construct($page){
//some sql to check if page exists
if($page_exists){
$this->PageExists = true;
$this->PageTitle = $fetched['row_title'];
$this->PageId = $fetched['row_id'];
}
}
}
class BlogPost extends BlogPage {
function __construct(){
$page_id = $this->PageId;
//some sql to get the posts that have post_page like $page_id
}
}
Main.php页面
$page = new BlogPage("index");
if($page->PageExists == true){
include("posts.php");
}else{
include("notfound.php");
}
posts.php
$pageTitle = $page->PageTitle;
$posts = new BlogPost();
>
答案 0 :(得分:0)
我觉得你在classOne protected
中有你的变量答案 1 :(得分:0)
如果classTwo从classOne扩展,您将能够:
$two = new classTwo();
$two->functionFromClassOne();
并且可以访问该课程。
您可能有必要解释确切的用例,以便建议采用最佳方法。也许继承并不是实现你想要建立的任何东西的最佳方式。
答案 2 :(得分:0)
如果您想访问父级的protected
和public
个变量和函数,那么您将使用parent::
静态前缀。
在您的情况下,如果您想访问classOne
中的protected
个public
和classTwo
个变量和函数,那么您只需使用parent::
在classTwo
内。
如果您只想在包含的文件中使用classTwo
实例化对象,那么您不需要将其声明为global
,您只需正常访问它就像访问它一样下面的行在主文件上声明它。
您不需要将该变量的范围定义为全局,因为它已在该脚本的该部分上具有该范围。所以,只需像这样访问它:
// global $page; remove this, no need for it
$pageTitle = $page->PageTitle;
$posts = new BlogPost();
这是我对你的第二个问题的建议解决方案:
<?php
class Page{
public $PageExists = false;
public $PageTitle = 'no title';
public $PageId = '0';
// add other options here
// add other parameters to this function
// or pass an array to it
protected function fill($page_id, $page_title){
$this->PageExists = true;
$this->PageId = $page_id;
$this->PageTitle = $page_title;
}
}
class BlogPage extends Page{
function __construct($page){
//some sql to check if page exists
if($page_exists){
parent::fill($fetched['row_id'], $fetched['row_title']);
}
}
}
class BlogPost extends Page {
function __construct($page_id){
//some sql to get the posts that have post_page like $page_id
if($post_exists){
parent::fill($fetched['row_id'], $fetched['row_title']);
}
}
}
?>
然后你可以使用类似下面的类......
在Main.php页面上
<?php
$page = new BlogPage("index");
if($page->PageExists == true){
include("posts.php");
} else{
include("notfound.php");
}
?>
关于posts.php
<?php
$pageTitle = $page->PageTitle;
$posts = new BlogPost($page->PageId);
?>