我可能有一个非常简单的问题,但我现在不知道如何修复它。也许我只是忘记了什么,但我需要你的帮助。
我有模特:
<?php
class Model
{
protected $storage;
public function __construct()
{
$this->storage = $_SERVER["DOCUMENT_ROOT"] . "/mvc/images/";
if(!file_exists($this->storage))
{
mkdir($this->storage, 0777);
}
}
public function storageHandler()
{
if(count(glob($this->storage."/*")) === 0)
{
echo "Žiadne kategórie";
}
else
{
$iterator = new DirectoryIterator($this->storage);
return $iterator;
}
}
}
?>
模型类别,继承自Model。
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/mvc/model/Model.php");
class Category extends Model
{
private $photos_count;
public function __construct($data)
{
if(isset($data))
{
$gallery_path = $this->storage . $data;
if(!file_exists($this->$storage .$data))
{
mkdir($tihs->storage . $data, 0700);
header("Location: /mvc/" );
}
else
{
echo "Kategória už existuje.";
}
}
}
}
?>
我很想在我的Category类中使用Model中的$ storage变量。我该怎么办?我知道某种方式,但它不会是最好的。有没有解决方案可以做到这一点?
答案 0 :(得分:2)
受保护的属性$ storage可供您的子课程使用,但您的例子中$this
拼写错误:
mkdir($tihs->storage . $data, 0700);
应该是:
$this->storage ...
另外,正如mamdouh所说,你需要从子进程中调用父构造函数来初始化:
public function __construct($data)
{
parent::_construct();
...rest of code...
答案 1 :(得分:2)
除了Ray的回答,您需要在类别类中使用parent::__construct()
,如此
class Category extends Model
{
private $photos_count;
public function __construct($data)
{
parent::__construct();
//rest of the code