0

PHPの組み込みクラスとその使用方法を理解しようとしています。また、私はこれらの「もの」を説明するために正しい言語を使用しようとしています。たとえば、DateTimeクラスを取り上げます。

これで、このクラスのメソッドが表示され、DateTime::setDateで示されます。だから私は「これはsetDateというメソッドを持つDateTimeクラスです?また、setDateのDateTimeクラスに関するPHPマニュアルを読むと、次のことがわかります。

DateTime :: setDate <-これは、コードでこれをそのまま使用できることを意味しますか?のように:DateTime :: setDate(); ?

以下のようにオブジェクトを作成する方法がわかります。

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');// how would you know to do this? I thought $date->year;
?>

そしてこれはこれから来ました:public DateTime DateTime :: setDate(int $ year、int $ month、int $ day)

また、真上の行から、例を見なくても使い方がわかるはずです。

どんな良い入力でも大歓迎です。

ありがとう、ジム

4

4 に答える 4

1

私は参照の表記が嫌い::です。私は常に長い静的メソッドリストを扱っていると思います。

とにかくそれはC++名前空間表記から来ているので、 「関数はクラスに属してDateTime::diffいる」と読むことを意図していますが、私はDateTimeリファレンスページにいるので非常に明確に見えます!diffDateTime

わかりやすくするために、「ダブルコロン」演算子はT_PAAMAYIM_NEKUDOTAYIM[実際にはダブルコロンのヘブライ語]と呼ば​​れます。

簡単に言うと、メソッドのシグネチャでstatic->キーワードを読み取らない限り、表記法を使用してください。

于 2012-09-09T15:21:12.490 に答える
1

メソッドがであると示されていない限り、コードでメソッドを呼び出すことはstaticできませんclassname::methodname();。コードの説明では、::基本的に「このメソッドはこのクラスに属している」とだけ書かれています。ええ、それはちょっと紛らわしいです。

于 2012-09-09T15:11:05.707 に答える
0

実際::、ドキュメントでなぜ演算子が使用されているのか理解できず、混乱を招きます。

しかし、ドキュメントに記載されている場合、DateTime::setDateこれはメソッド定義であることを意味します。最初に、次のコマンドでクラスをインスタンス化する必要があります。

$instance = new DateTime();

次に、インスタンスのメソッドを呼び出します。

$instance->setDate($dateString);

これは、メソッドがクラスオブジェクトでどのように機能するかであり、として記述されClasse::methodます。

于 2012-09-09T15:10:43.017 に答える
0

PHPヘルプから、次の式を見つけることができます。「基本クラスの関数と変数を参照したり、まだインスタンスがないクラスの関数を参照したりすると便利な場合があります。これには::演算子が使用されています。」
::演算子は、基本クラスの関数を呼び出すために使用され、メソッドをオーバーライドする基本クラスから作成されたクラスを無視します。

<?php
class A {
    function example() {
        echo "I am the original function A::example().<br />\n";
    }
}

class B extends A {
    function example() {
        echo "I am the redefined function B::example().<br />\n";
        A::example();
    }
}

// there is no object of class A.
// this will print
//   I am the original function A::example().<br />
A::example();

// create an object of class B.
$b = new B;

// this will print 
//   I am the redefined function B::example().<br />
//   I am the original function A::example().<br />
$b->example();
?> 
于 2012-09-09T15:26:46.977 に答える