当我运行此代码时:
<?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:\AppServ\www\ilk\class\header.class.php on line 9
为什么我不能使用parent :: word? 我只想更改 public $ sql
的变量值答案 0 :(得分:2)
我们至少应该看到GetData
父类。我敢打赌$ sql不是该类中的静态属性。在这种情况下,如果静态有意义,则将其声明为static,否则替换:
parent::$sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
使用:
$this->sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
任何对象始终可以访问父类中声明为public
或protected
的属性。在这种情况下,您不需要parent::
。
BTW 我不明白为什么你有这些return
陈述......
答案 1 :(得分:1)
要改变公共价值,您可以这样做:
public function sayfaHeader($sayfa = 1)
{
return $this->sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
}
将调用父属性并指定值。
答案 2 :(得分:1)
首先,您要发出一个回复,然后在其下面有代码。一旦你发出一个回复,就不会执行下面的代码,所以希望你不要依赖return parent::$sql...
下面的任何东西来执行,因为它不会被执行。
其次,在单个函数中有三个返回语句,这些语句属于同一个逻辑块。在函数中使用多个return语句没有任何问题,但它们必须是互斥的,如下面的代码所示:
if( condition ) return $something;
else return $somethingElse
在PHP中,您只能从函数返回单个值。该值可以是一个数组,如果您愿意,可以存储多个值。此外,您可以return values by reference和pass parameters as references,但除非您有充分理由这样做,否则通常不是一个好主意。
我会保留回答您的实际问题,直到我看到GetData
的样子。