1

当我运行此代码时:

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

4

3 回答 3

2

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

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

和:

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

任何对象始终可以访问声明的属性publicprotected父类中的属性。parent::在那种情况下你不需要。

顺便说一句,我不明白你为什么有所有这些return陈述......

于 2012-05-24T15:53:03.710 回答
1

要更改公共价值,您可以这样做:

 public function sayfaHeader($sayfa = 1) 
 { 
    return $this->sql = "SELECT * FROM header WHERE id='" . $sayfa . "'";
 }

将调用父属性并赋值。

于 2012-05-24T15:54:00.810 回答
1

首先,您要发出退货,然后在其下方有代码。一旦你发出一个 return,后面的代码就不会被执行,所以希望你不依赖于下面的任何东西return parent::$sql...被执行,因为它不会被执行。

其次,您在一个函数中有三个返回语句,它们属于同一个逻辑块。在一个函数中有多个 return 语句没有错,但它们必须是互斥的,如下面的代码:

if( condition ) return $something;
else return $somethingElse

在 PHP 中,您只能从函数返回单个值。该值可以是一个数组,如果您愿意,可以在其中存储多个值。此外,您可以通过引用返回值并将参数作为引用传递,但通常这不是一个好主意,除非您有充分的理由这样做。

我会保留回答你的实际问题,直到我看到它的GetData样子。

于 2012-05-24T15:59:14.937 回答