0

php.net Web サイトからコードを取得しました。

<?php
class foo {
    public $foo;
    public $bar;
    public function foo() {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
echo <<<EOT
I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
EOT;
?>

しかし、私は混乱しています。すべての「foo」は何の略ですか? 関数を呼び出さずに、メソッド (関数) 内のプロパティ (変数) を本当に変更できますか?

私は同様のコードを書いていますが、何も起こりませんでした

<?php
class page {
    public $meta;
    public $buttons;
    public function show_meta() {
        $this->meta = "I'm a website";
        $this->buttons = array(
            "home" => "index.php",
            "about" => "about.php"
            );
    }
}

$index = new page();
echo $index->meta;
echo $index->buttons["home"];
?>

私はPHP学習者です。あなたの助けが必要です:)

4

3 に答える 3

2

function fooPHP4 スタイルのコンストラクターです (関数はクラスと同じ名前であることに注意してください)。PHP5では、function __construct()代わりに次のように記述します。

new foo()実際にコンストラクターを呼び出し、変数を初期化します。

于 2013-02-16T17:24:11.937 に答える
0

最初に、はい、あなたのプロパティはpublic.

2 番目のケースでは、警告を削除するための文字列を参照しています。

  $index->buttons["home"];

呼び出すことshow_metaはないため、配列に値が設定されることはありません。

于 2013-02-16T17:24:23.350 に答える
0

これは、コンストラクター メソッドの古い php 構文です。コンストラクターは、クラスから新しいオブジェクトが作成されるたびに呼び出される特別なメソッドです。コンストラクターの新しい命名規則では、すべてのコンストラクターには という名前が付けられ__constructます。

上記のコードを機能させるには、2 つの変数にアクセスする前に show_meta を呼び出すか、show_meta をコンストラクターにする必要があります。

$index = new page();
$index->show_meta();
echo $index->meta;
echo $index->buttons["home"];

ところで..ホームは文字列であり、「」内にある必要があります。そうしないと、少なくとも警告が発生します。

于 2013-02-16T17:24:47.450 に答える