ホームページ > バックエンド開発 > PHPチュートリアル > PHP オブジェクト指向プログラミング (1)

PHP オブジェクト指向プログラミング (1)

WBOY
リリース: 2016-06-23 13:16:13
オリジナル
836 人が閲覧しました

クラスとオブジェクトの関係:

クラスは人間のグループのようなもので、人を定式化するのと同じように、クラスからオブジェクトをインスタンス化します。

オブジェクト指向プログラムの単位はオブジェクトですが、オブジェクトはクラスによってインスタンス化されるため、最初に行う必要があるのはクラスを宣言する方法です。クラスを作成するのは簡単です。

クラスの形式

クラス クラス名 { }

クラスは、この人を他の人に紹介したい場合、

まず、この人の名前、性別を紹介します。 、年齢、身長、体重、電話番号、自宅住所など。

そして、この人は何ができるか、運転ができる、英語が話せる、コンピューターが使えるなどを紹介しなければなりません。

定義の観点から、それは次のように分類できます:

1. 人の名前、性別、年齢、身長、体重、電話番号、自宅の住所などの静的な説明をメンバー属性と呼びます

var $description のように var を使って定義することができます; このとき注意すべきことは、statement に値を割り当てる必要がないことです 例えば、人の名前が Xiao Ming の場合、次のことが可能です。この群衆の中から何十人ものシャオミンを見つけてください

2. 動的記述 例: この人は車を運転できます、英語を話せます、コンピューターを使用できます、など。動的記述をメンバーメソッドと呼びます

class 人{	成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址	成员方法:可以开车, 会说英语, 可以使用电脑}
ログイン後にコピー

<?phpclass Person{    // 下面是人的成员属性    var $name;    //人的名子    var $sex;    //人的性别    var $age;    //人的年龄    // 下面是人的成员方法    function say() // 这个人可以说话的方法    {         echo "这个人在说话";    }     function run() // 这个人可以走路的方法    {        echo "这个人在走路";    }}?>
ログイン後にコピー

クラスを定義した後、それを使用するには、そのクラスをインスタンス化する必要があります

新しいキーワードを使用します $object Name = new Class name();

<?phpclass Person{    //下面是人的成员属性    var $name; //人的名子    var $sex; //人的性别    var $age; //人的年龄    //下面是人的成员方法    function say() { //这个人可以说话的方法        echo "这个人在说话";    }     function run() { //这个人可以走路的方法        echo "这个人在走路";    }}$p1=new Person();$p2=new Person();$p3=new Person();?>
ログイン後にコピー

クラスをインスタンス化したので、クラス内のメンバーの使用方法を学ばなければなりません

オブジェクト->プロパティ $p1->名前; $p2->年齢; $p3->性別;

オブジェクト->メソッド $p1->say(); ()

<?phpclass Person{	// 下面是人的成员属性	var $name;		// 人的名子	var $sex;		// 人的性别	var $age;		// 人的年龄	// 下面是人的成员方法	function say() // 这个人可以说话的方法	{		echo "这个人在说话";	}	function run() // 这个人可以走路的方法	{		echo "这个人在走路";	}}$p1 = new Person(); //创建实例对象$p1$p2 = new Person(); //创建实例对象$p2$p3 = new Person(); //创建实例对象$p3// 下面三行是给$p1对象属性赋值$p1->name = "张三";$p1->sex = "男";$p1->age = 20;// 下面三行是访问$p1对象的属性echo "p1对象的名子是:" . $p1->name;echo "p1对象的性别是:" . $p1->sex;echo "p1对象的年龄是:" . $p1->age;// 下面两行访问$p1对象中的方法$p1->say();$p1->run();// 下面三行是给$p2对象属性赋值$p2->name = "李四";$p2->sex = "女";$p2->age = 30;// 下面三行是访问$p2对象的属性echo "p2对象的名子是:" . $p2->name;echo "p2对象的性别是:" . $p2->sex;echo "p2对象的年龄是:" . $p2->age;// 下面两行访问$p2对象中的方法$p2->say();$p2->run();// 下面三行是给$p3对象属性赋值$p3->name="王五";$p3->sex="男";$p3->age=40;// 下面三行是访问$p3对象的属性echo "p3对象的名子是:" . $p3->name;echo "p3对象的性别是:" . $p3->sex;echo "p3对象的年龄是:" . $p3->age;// 下面两行访问$p3对象中的方法$p3->say();$p3->run();?>
ログイン後にコピー

この時点で、基本的にクラスを使用できます。しかし、まだ欠点があることがわかりました。つまり、外部からはアクセスできますが、内部からはアクセスできないということです。「this」の概念を導入しました。内部的にアクセスして割り当てることができ、コードの量が減ります。

コンストラクターメソッド __construct() とデストラクターメソッド __destruct()

コンストラクターメソッド __construct(): つまり、新しいメソッドを使用してオブジェクトのインスタンス化を実装します (オブジェクトのインスタンス化時に実装が渡せることが理解できます)パラメータを入力してブリッジを構築します)。キューとして理解されました

<?phpclass Person{	// 下面是人的成员属性	var $name; //人的名子	var $sex; //人的性别	var $age; //人的年龄	// 下面是人的成员方法	function say() // 这个人可以说话的方法	{		echo "我的名子叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age;	}	function run() // 这个人可以走路的方法	{		echo "这个人在走路";	}}$p1 = new Person(); // 创建实例对象$p1$p2 = new Person(); // 创建实例对象$p2$p3 = new Person(); // 创建实例对象$p3// 下面三行是给$p1对象属性赋值$p1->name = "张三";$p1->sex = "男";$p1->age = 20;// 下面访问$p1对象中的说话方法$p1->say();// 下面三行是给$p2对象属性赋值$p2->name = "李四";$p2->sex = "女";$p2->age = 30;// 下面访问$p2对象中的说话方法$p2->say();// 下面三行是给$p3对象属性赋值$p3->name = "王五";$p3->sex = "男";$p3->age = 40;// 下面访问$p3对象中的说话方法$p3->say();?>
ログイン後にコピー

出力結果は次のとおりです:

私の名前: Zhang San 性別: 男性 私の年齢: 20 私の名前: Li Si 性別: 女性 私の年齢: 30 私の名前は: Wang Wu 性別: 男性 私の年齢: 40

デストラクターメソッド __destruct(): デストラクターを使用すると、クラスを破棄する前に一連の操作を実行できます。クラスのデストラクターは __destruct() である必要があることに注意してください。デストラクタは、パラメータを含むスタックとして理解できません。 年齢: 20 私の名前: Li Si 性別: 女性 私の年齢: 30 私の名前: Wang Wu 性別: 男性 私の年齢: 40

さようなら、Wang Wu

Goodbye Li Si

さようなら、張三




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート