我尝试说明有关 PHP 的文章并使用以下结构构建:文章-- 儿童文章我现在想访问 ChildArticle 类中从 Article 类继承的函数。这是我的文章类:<?phpnamespace App\Article;use PDO;class Articles{private $id;private $name;private $cid;private $ordernumber;private $description;private $descriptionLong;private $childArticles;/** * @return mixed */public function getId(){ return $this->id;}/** * @return mixed */public function getName(){ return $this->name;}/** * @return mixed */public function getCid(){ return $this->cid;}/** * @return mixed */public function getOrdernumber(){ return $this->ordernumber;}/** * @return mixed */public function getDescription(){ return $this->description;}/** * @return mixed */public function getDescriptionLong(){ return $this->descriptionLong;}/** * @return mixed */public function getChildArticles(){ return $this->childArticles;}这是我的 ChildArticle 类:class ChildArticle extends Articles{}现在我想阅读子文章的订单号: foreach ($article->getChildArticles() as $child){ echo "Child: {$child->getOrdernumber()}<br>"; }我的 readChildArticles 功能:function readChildArticles(PDO $pdo){ $stmt = $pdo->prepare( "SELECT articleID as id, ordernumber FROM `s_articles_details` WHERE ordernumber LIKE :ordernumberWOD AND ordernumber NOT LIKE :ordernumber" ); $stmt->execute([ 'ordernumberWOD'=>$this->ordernumber.".%", 'ordernumber'=>$this->ordernumber ]); $this->childArticles = $stmt->fetchAll(PDO::FETCH_CLASS,"App\\Article\\ChildArticle");}我的输出是这样的:Child: Child:and so on 如果我通过 $child->ordernumber 获得订单号,它就可以工作。为什么我的 ChildArticle 类不完全像参数一样接管函数?你能给我一个提示我如何解决这个问题或者我可以在哪里阅读它?
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
问题在于 PDO 构造对象的方式:它创建类 ( ChildArticle
) 的一个实例,然后将所有列设置为其上的属性。由于$ordernumber
is private
,这会在每个类中创建一个单独的属性,即Article::$ordernumber
和ChildArticle::$ordernumber
是两个完全独立的属性。中的方法Article
尝试访问Article::$ordernumber
.
使属性至少为protected
,或更改实例化类的方式。
如果您没有充分理由使用单独的属性和 getter,您不妨考虑制作属性public
并摆脱 getter 方法。
- 1 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消