ホームページ >php教程 >php手册 >PHP のクラスに関する個人的な見解

PHP のクラスに関する個人的な見解

WBOY
WBOYオリジナル
2016-06-21 09:15:011592ブラウズ

私の観点からは、PHP のクラスに関しては、それを表現するために使用されている言語が非公式であり、それが正しいかどうかはわかりません。

クラスの作成は非常に簡単です:

class my_class {}


クラスとは具体的に何をするものでしょうか?多くの人はそれをブラックボックスだと言いますが、私はここではそれを独立した全体と呼んでいます。クラス名だけはわかりますが、その中身はわかりません。では、このクラスをどのように使用するのでしょうか?
まず第一に、その中に定義されているパブリック変数(専門用語では「プロパティ」と呼ばれます)があるかどうかを知る必要があります。
2 番目: その中でどのような関数が定義されているかを知る必要があります。それは専門用語で「メソッド」と呼ばれます。
専門用語に混乱したので無視しました。

クラス内でパブリック変数を定義する方法とそれが何をするのか?

非常に簡単です。my_class クラスを拡張しましょう:

class my_class
{
var $username;
}


上記を見ると、非常に単純です。var で構成されるパブリック変数を定義しました。 +スペース+通常の変数名。何に使われますか?関数について考えてみましょう。関数の外の変数にアクセスしたい場合、まずそれをグローバルにする必要がありますか?この効果についても同様で、このクラス内のすべての関数がこの変数にアクセスできるようになります。また、関数と異なる点の 1 つは、クラスの外部もいつでもこの変数にアクセスして制御できることです。外部へのアクセス方法については後ほど。もう 1 つの違いがあります。複雑なステートメントを使用してこの変数に値を割り当てることはできません (クラスを理解した後でルールを確認してください)。

デフォルト値を与えます:

class my_class
{
var $username = "Deep Space";
}


OK、パブリック変数が定義され、次に関数が定義されます (「メソッド」とも呼ばれます) ):

class my_class
{
var $username = "深宇宙";

function show_username()
{
}
}


この定義関数は、形式的には通常の定義関数と変わりません。シンプルにして、$username を出力する関数を定義します。

class my_class
{
var $username = "deep space";

function show_username($username)
{
echo $username;
}
}


この時点で混乱している人もいるかもしれませんが、笑、最も重要なことはここです、はっきりと見てください。 $username は 3 つになりました。どっちだ〜〜

関数の仮引数については説明する必要はありませんね。この関数の機能は、仮パラメータで受け取った値を出力することです。つまり、次の場合:

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 つの単語を印刷してみてください。なぜそんなに複雑だと思いますか?関数も使えるんじゃないでしょうか?私は、「もちろん、そんな単純なことではメリットがわかりません。拡張を続けましょう」と言いました。

もう 1 つの質問は、今述べた「パブリック変数」がなぜ役に立たないのかということです。この関数がこのパブリック変数 var $username のデフォルト値を自動的に受け取らないのはなぜですか?つまり、

$Name->show_username($username);


とすると、結果はどうなるでしょうか? 答えは、出力がありません。仮パラメータ $username に値を与えていないためです。

では、このパブリック変数はどうやって使うのでしょうか?このクラスを変更しましょう:

class my_class
{
var $username = "deep space";

function show_username()
{
echo $this->username;
}
}


うわー、いや、そこだ今回は仮パラメータはありませんか? $this-> も余分にあるので、めまいがします(笑)。実際、これは授業の最大の利便性の 1 つでもあります。
$thisの役割:クラス内のパブリック変数や関数にアクセスします。
訪問?それほどプロフェッショナルですか?実際、var $username の代わりに $this->username が使用されます。 $this は、パブリックでアクセス可能で、関数の外部のもの (他の変数や関数など) であることを示すために使用されます。

試してみましょう:

$Name->show_username();


ほら、ついに「深宇宙」って文字が出てきたよ、わはは。

「深宇宙」という文字を印刷したくないのですが、「豚の頭の深宇宙」と印刷したいのですが、どうすればよいですか?それは非常に簡単で、このパブリック変数を再割り当てします。私はあなたに感銘を受けました。

$Name->username = "Pig Head Deep Sky";


これの意味わかりますか? $Name->username は、クラス内のこのパブリック変数を表します。等号の割り当てについては説明する必要はありません。

もう一度印刷しましょう:

$Name->show_username();


はは、やっと「Pig Head Deep Space」を印刷できました。悪くない、仮パラメータなしで出力された値を任意に変更できるのは非常に便利です~~。

でも、名前を出力するだけでは退屈すぎるので、このクラスを拡張して Welcome という関数を作成しましょう:

class my_class
{
var $username = "Deep Space";

function show_username()
{
echo $this->username;
}

function Welcome()
{
}
}


さて、どのような関数を実装すればよいでしょうか?簡単にするには、名前の前に「ようこそ」という単語を付けます

class my_class
{
var $username = "deep space";

function show_username()
{
echo $this->username ;
}

function Welcome()
{
echo "Welcome";
$this->show_username();
}
}


$this を 2 回目に見ましたか?前回とは少し異なります。$this->show_username(); は何に使用されますか?実際、クラス内の関数を指します。実際には、show_username 関数を呼び出します。この関数が他の場所 (Welcome 関数など) ではなく、クラス内にあり、Welcome 関数と並行していることを示します。

Welcome 関数によって実装される関数は非常に単純で、まず「Welcome」という 2 つの単語を出力し、次に show_username 関数を実行して名前を出力します。

この関数を試してみましょう:

$Name->Welcome();


ほら、「深宇宙へようこそ」という4つの単語が出力されます。

でも「ピッグヘッド深宇宙へようこそ」を印刷したいのですが、どうすればよいでしょうか?私は確信したので、パブリック変数 var $username に値を与えましょう:

$Name->username = "Pig Head Deep Space";


次に、ウェルカム メッセージを出力します:

$Name->Welcome ( );


やあ、やっと「ピッグヘッド深宇宙へようこそ」が印刷できました。

どうですか?クラスの使い方を理解していますか?利点は、$this で指定する限り、クラス内の任意の関数を呼び出すことができ、このパブリック変数の値をクラス内の関数で使用できることです。 ......非常に多くのアプリケーションがあり、あなたが発見するのを待っています。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。