ホームページで更新された Class に関する記事をざっと見ました (PHPE の記事 http://www.phpe.net/articles/389.shtml を参照)。とても良い内容なので、読むことをお勧めします。
クラス探索~~ クラスの機能と実装を大まかに理解するのに半年かかりました。主な理由は、私が理解できる記事がないことです(私はこれまでOOのものに触れたことはありません)。
私の観点から見ると、PHP でクラスを表現するために使用される言語は非公式であり、それが正しいかどうかはわかりません。
クラスの作成は簡単です。
class my_class {}
クラスは正確に何をするのでしょうか?多くの人というものはブラックボックスであり、ここではそれを独立した全体と呼んでいます。クラス名だけはわかりますが、その中身はわかりません。では、このクラスをどのように使用するのでしょうか?
まず第一に: パブリック変数 (専門用語では「プロパティ」と呼ばれます) が定義されているかどうかを知る必要があります。
第二に、その中でどのような関数が定義されているかを知る必要があります。それは専門用語で「メソッド」と呼ばれます。
専門用語ばかりで混乱したので、無視しました。
クラス内でパブリック変数を定義する方法とその機能?
非常に簡単です。my_class クラスを拡張しましょう。
class my_class
{
var $username;
}
上記を見ると、非常に簡単なパブリック変数を定義しています。 var を使用するだけです。 通常の変数名はスペースで構成されます。何に使われますか?関数について考えてみましょう。関数の外の変数にアクセスしたい場合、最初にそれをグローバル化する必要がありますか?この効果についても同様で、このクラス内のすべての関数がアクセスできるようにする必要があります。関数と異なる点の 1 つは、この変数にはクラスの外部からもアクセスできることです。アクセス方法については後ほど説明します。後で外側から。もう 1 つの違いがあります。複雑なステートメントを使用してこの変数に値を割り当てることはできません (クラスを理解した後でルールを確認してください)。デフォルト値を指定します。
class my_class
{
var $username = "deep space";
}
OK、パブリック変数が定義され、次に関数が定義されます (これも同様です) -「方法」と呼ばれます)。
class my_class
{
var $username = "deep space";
function show_username()
{
}
}
この定義関数は次と同じです通常の定義 関数形式に違いはありません。単純にして、$username を出力する関数を定義します。
class my_class
{
var $username = "deep space";
function show_username($username)
{
echo $username;
}
}
この時点で混乱している人もいるかもしれませんが、最も重要なことはここです、よく見てください。現在、 $username は 3 つあります。どっちだ〜〜
関数の行パラメータについては説明する必要はありませんね。この関数の機能は、line パラメータで受け取った値を出力することです。つまり、次の場合:
show_username("Pig's Head Deep Space")
次に、「Pig's Head Deep Space」を出力します。単純。
この機能にアクセスするにはどうすればよいですか?上で述べたように、これは直接の show_username("Pig Head Deep Space"); ではありません。心配しないでください。以下のように:
$Name = new my_class();
このようにして、上記の my_class クラスが初期化され、このオブジェクトが変数 $Name に割り当てられることがわかります。クラス全員、ふふ。
クラスで次の関数を使用します:
$Name->show_username("Pig Head Deep Space");
混乱していますが、なぜこんなに複雑なのでしょうか?矢が欲しいですか?実際にはとても鮮やかです。クラスは変数 $Name にすでに与えられていますよね?つまり、$Name はこのクラスを表し、矢印を使用してクラス内の show_username 関数を指します。それはとても単純です。つまり、この関数はこのクラスにあり、他の関数にはありません。違いを示していると理解できます (笑)。
試しに「Pig Head Deep Sky」という 4 つの単語を印刷してみてください。なぜそんなに複雑だと思いますか?関数も使えるんじゃないでしょうか?私は、「もちろん、そんな単純なことではメリットがわかりません。拡張を続けましょう」と言いました。
別の質問があります: なぜ今言及した「パブリック変数」は役に立たないのですか?この関数がこのパブリック変数 var $username のデフォルト値を自動的に受け取らないのはなぜですか?つまり、次のようにすると、次のようになります。
$Name->show_username($username);
結果はどうなるでしょうか? 答えは、出力がありません。仮パラメータ $username に値を与えていないためです。
それでは、このパブリック変数をどのように使用するのでしょうか?このクラスを変更しましょう:
class my_class
{
var $username = "Deep Space";
function show_username()
{
echo $this->username; >}
}
あれ、今回は顔パラメータがないんですよね? $this-> も余分にあるので、めまいがします(笑)。実際、これは授業の最大の利便性の 1 つでもあります。
$this の役割: クラス内のパブリック変数または関数にアクセスします。
訪問しますか?それほどプロフェッショナルですか?実際、$this->username は、var $username の代わりに使用され、パブリックであることを示します。アクセス可能、機能外のもの。
試してみましょう:
$Name->show_username();
ほら、ついに「深宇宙」という単語が出力されました、わはは。
「Deep Space」という文字を印刷したくないのですが、「Pig Head Deep Space」と印刷したいのですが、どうすればよいですか?それは非常に簡単で、このパブリック変数を再割り当てします。私はあなたに感銘を受けました。
$Name->username = "Pig Head Deep Sky"
これの意味が分かりますか? $Name->username は、クラス内のこのパブリック変数を表します。等号の割り当てについては説明する必要はありません。
もう一度印刷しましょう
$Name->show_username();
はは、やっと「Pig Head Deep Space」を印刷できました。悪くないです、仮パラメータなしで出力された値を任意に変更できるのは非常に便利です~~。
しかし、名前を出力するだけでは退屈すぎるので、このクラスを拡張して Welcome という関数を作成しましょう。
class my_class
{
var $username = "Deep Space"; 🎜>関数 show_username()
{
echo $this->username;
}
関数 Welcome()
{
}
}
まあ、機能は実装できるでしょうか?簡単にするには、名前の前に「ようこそ」という単語を実装します。
class my_class
{
var $username = "deep space";
function show_username()
{
echo $this->ユーザー名;
関数 Welcome()
{
echo "ようこそ";
$this->show_username(); 🎜>}
$this を二度目に見ましたか? $this->show_username(); 何に使用されますか?実際、これは show_username 関数を呼び出すだけで、 $this を使用して、この関数が他の場所 (Welcome 関数など) ではなくクラス内にあり、Welcome 関数と並行していることを示します。
Welcome 関数によって実装される関数は非常に単純です。まず、「Welcome」という 2 つの単語を出力し、次に show_username 関数を実行して名前を出力します。
この関数を試してみましょう:
$Name->Welcome();
ほら、「深宇宙へようこそ」という 4 つの単語が出力されます。
しかし、「ピッグヘッド深宇宙へようこそ」を印刷したいのですが、どうすればよいでしょうか?私は確信しています。パブリック変数 var $username に値を与えましょう:
$Name->username = "Pig Head Deep Space"
次に、ウェルカム メッセージを出力します:
$Name-> ; Welcome();
ついに「ピッグヘッド深宇宙へようこそ」が印刷されました。
どうですか?クラスの使い方を理解していますか?利点は、$this で指定する限り、クラス内の任意の関数を呼び出すことができ、このパブリック変数の値をクラス内の関数で使用できることです。 ......非常に多くのアプリケーションがあり、あなたが発見するのを待っています。