当我运行这段代码时:
<?php
require_once 'getdata.class.php';
class Header extends GetData
{
public $headers;
public function sayfaHeader($sayfa = 1)
{
return parent::$sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
//$data = parent::getData();
return $data;
$this->headers = (object) $data;
return (object) $this->headers;
}
}
$header = new Header;
echo $header->sayfaHeader();
?>
我收到此错误代码:
Fatal error: Access to undeclared static property: GetData::$sql in C:AppServwwwilkclassheader.class.php on line 9
为什么我不能使用 parent:: word?我只想更改公共$sql的变量值
至少我们应该看到GetData
父类。我敢打赌$sql不是该类中的静态属性。在这种情况下,如果静态有意义,则声明它是静态的,否则替换:
parent::$sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
跟:
$this->sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
任何对象始终可以访问在父类中声明public
或protected
的属性。在这种情况下,您不需要parent::
。
顺便说一句,我不明白你为什么有所有这些return
陈述......
要更改公共值,您可以这样做:
public function sayfaHeader($sayfa = 1)
{
return $this->sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
}
将调用父属性并分配值。
首先,你发出一个返回,然后你下面有代码。 一旦你发出了返回,下面的代码就不会被执行,所以希望你不依赖于下面的任何东西return parent::$sql...
被执行,因为它不会。
其次,在单个函数中有三个属于同一逻辑块的返回语句。 在一个函数中有多个 return 语句没有错,但它们必须是互斥的,如以下代码所示:
if( condition ) return $something;
else return $somethingElse
在 PHP 中,您只能从函数返回单个值。 该值可以是数组,如果需要,可以在其中存储多个值。 此外,您可以通过引用返回值并将参数作为引用传递,但通常这不是一个好主意,除非您有充分的理由这样做。
我会保留回答你的实际问题,直到我能看到GetData
是什么样子。