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 :: wordを使用できないのはなぜですか?public$sqlの変数値のみを変更したい

4

3 に答える 3

2

GetData少なくとも、親クラスが表示されるはずです。$sql はそのクラスの静的プロパティではないと思います。その場合、静的であることが理にかなっている場合は、静的であると宣言し、そうでない場合は置き換えます。

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

と:

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

どのオブジェクトも、宣言されたプロパティpublicまたはprotected親クラス内のプロパティに常にアクセスできます。その場合は必要ありませんparent::

ところで、なぜあなたがこれらすべてのreturn声明を持っているのか理解できません...

于 2012-05-24T15:53:03.710 に答える
1

まず、返品を発行していて、その下にコードがあります。return を発行すると、それに続くコードは実行さreturn parent::$sql...れません。

次に、 1 つの関数に3 つのreturn ステートメントがあり、それらが同じロジック ブロックに分類されます。関数に複数の return ステートメントを使用しても問題はありませんが、次のコードのように相互に排他的である必要があります。

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

PHP では、関数から単一の値のみを返すことができます。その値は、必要に応じて複数の値を格納する配列にすることができます。また、参照によって値を返し、参照としてパラメーターを渡すこともできますが、通常、そうする正当な理由がない限り、これはあまり良い考えではありません。

どのように見えるかを見ることができるまで、実際の質問への回答は保留しますGetData.

于 2012-05-24T15:59:14.937 に答える
1

public の値を変更するには、次のようにします。

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

親プロパティを呼び出して値を割り当てます。

于 2012-05-24T15:54:00.810 に答える