使用父::时静态属性有问题


problematical of static property when using parent::

当我运行这段代码时:

<?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?我只想更改公共$sql的变量值

至少我们应该看到GetData父类。我敢打赌$sql不是该类中的静态属性。在这种情况下,如果静态有意义,则声明它是静态的,否则替换:

parent::$sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";

跟:

$this->sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";

任何对象始终可以访问在父类中声明publicprotected的属性。在这种情况下,您不需要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是什么样子。