クラスまで来たぜ!! (´・ω・)ノ
PHPのクラスあれこれ (*´∀`)ノ
こんばんは。
キテレツです。
今日はPHPのクラスってのをあれこれと。
PHP5になってから大幅パワーアップと紹介されていた機能ですが、他のクラスをそんなに知っているわけではないので・・・どうなんだろう?
基本的には同じだなぁ(´-ω-`;)ゞポリポリ
ってのが感想でした。
- クラスの作成
- メソッドの作成
- メンバーの参照
- 外部に公開する変数(これってプロパティか!?)
- クラスの継承
- 例外処理
- コンストラクタとデストラクタ
- 例外処理
- 抽象クラス(abstract)
- インターフェイス(interface)
何と比べるの??って部分ですが、昔勉強したDelphiだったり、Rubyだったり。
およそクラスを宣言するプログラミング言語は似たような感じの機能を持っていて、共通する部分があったりします。
キテレツは「多重継承」と呼ばれる機能が嫌いです。
簡単にスーパークラスな機能を持ったやつを実装できるんですが、、、、同じメソッド名だったりした場合にどれがどれやらわからずめんどくさい。(´-ω-`;)ゞポリポリ
複雑になりやすいし。。。。賢くないキテレツには多重継承は鬼門です。
ちゃんと使いこなせる人なら問題ないんでしょうけれども・・・・
この多重継承を使いまくっているC++のコードを読んだことがあり、全く読みきれず・・・・・
まぁ、そもそもコードを読むことに慣れていないのもあったわけですが、一発で嫌いになってしまいました。(´-ω-`;)ゞポリポリ
まぁ、まずは抽象クラスの利用かな。
正直、何のためのabstractなのか・・・・複数人で開発するときのテンプレートとして共通化を図るとかしか思い浮かばない。
abstractで「哺乳類」を宣言しておき、そいつを継承した「人間」クラスを作って、肺やら胃やら腸をオーバーライドする。
同じ哺乳類でも、人間と犬は違うわけなので、そういう使い方をするときに、統一感のあるメソッドが出来上がりますね。
犬の肺メソッドと人間の肺メソッドは違うわけですね。
キテレツみたいな人種は、すぐにオリジナルなメソッドとか作っちまう傾向にありますので・・(´д`ι)
abstractできっちりと枠にはめられるのは有用かもしれません。
<?php abstract class User { protected $name = NULL; abstract protected function print_hello(); } class Guest extends User { protected $name = "ゲスト"; public function print_hello() { echo $this->name; echo "さん。はじめまして!!<br/>"; } } $newuser = new Guest(); // Guestクラスのインスタンス生成 $newuser->print_hello(); // メソッド読んでみる ?>
インターフェイスがよくわからん・・・
キテレツです。
これ・・・abstractとよく似ているんですがちと違います。
extendsキーワードでの継承とは違って、複数のクラスを継承することが可能・・・
あぁ、書いててわかった。
これ・・・多重継承だ。(´・ω・)ノ
<?php // インターフェイスを作成 interface Datainterface { public function add($key,$data); public function get($key); } // 抽象クラス作成 abstract class User implements Datainterface { private $array = array(); abstract protected function print_hello(); // 抽象クラスの中で、インターフェイスをオーバーライド public function add($key,$data) { $this->array[$key] = $data; } public function get($key) { return $this->array[$key]; } } class Member extends User { public tunction print_hello() { echo "会員:ログイン中<br/>"; echo "$this->get("name"); echo "さん。こんにちは!!<br/>" } } $member = new Member(); $member->add('name',"キテレツ"); // 名前をセットして $member->print_hello(); // 名前を表示させる ?>
うん。
思いつくままにインターフェイスを作りまくると、収集がつかなくなりそうです。
インターフェイスも、複数人で開発案件をこなす場合などに威力を発揮しますね。
別のチームが作ったインターフェイスと自分のチームが作ったインターフェイスを合体。
インターフェイスも抽象化も、複数人でルールを決めて開発するときに役に立つ。
そう考えると、自分の中ではしっくりくるかなぁ。
こいつを実装した設計者は、今、キテレツが思い描く方法を想定して設計したんだろうか。
何かを作る時って、解決したい問題があったりするわけですが、はたしてどんな問題を解決するために実装されたのか。
そのへんが分かると、ちゃんとした使い方が理解できるんだろうなぁ。
今日のPHP
クラスはざっとだけどやってみた。
わからなくなったら戻ればいいし。
さぁ、いよいよデータベースの世界だ!!
■PHPの基礎 section 07 PHPスクリプトの書き方 section 08 文字の表示 section 09 HTMLにPHPを埋める section 10 定数の利用 section 11 変数の利用 section 12 配列の利用 section 13 連想配列の利用 section 14 演算子 section 15 if section 16 switch section 17 while section 18 for section 19 foreach section 20 continue、break section 21 require、include section 22 関数 section 23 関数の引数 section 24 関数の戻り値 section 25 グローバル変数 ■PHPの組み込み関数 section 26 文字列操作 section 27 配列操作 section 28 日付・時刻の操作 section 29 ファイル操作 section 30 HTTPヘッダーの利用 section 31 メール送信 section 32 正規表現の利用 ■PHP(WEB) section 33 テキストの送信 section 34 複数テキストの送信 section 35 hiddenタグの扱い section 36 送信ボタンの扱い section 37 チェックボックスの扱い section 38 ラジオボタンの扱い section 39 プルダウンメニューの扱い section 40 リストボックスの扱い section 41 Cookie section 42 Basic認証 section 43 セッション管理 section 44 ファイルのアップロード section 45 画像の縮小 section 46 メール受信 section 47 外部コマンド実行 ■オブジェクト指向(PHP4、PHP5) section 48 クラス作成 section 49 インスタンスとコンストラクタ section 50 メソッド section 51 継承 section 52 PHP5でのクラス section 53 クラスの利用 ← 今ココ ■PHPによるデータベース利用(PDO) section 63 データベース接続 section 64 SQL section 65 データ挿入 section 66 データ検索 section 67 データ更新 section 68 データ削除 section 69 処理の連携 ■会員管理システム(基本機能) section 70 構成 section 71 テーブル設計 section 72 設定と確認 section 73 テンプレートエンジン section 74 認証 section 75 入力チェック section 76 登録処理 section 77 メールによる確認 section 78 更新処理 section 79 削除処理 ■会員管理システム(管理機能) section 80 管理画面表示 section 81 分割表示 section 82 その他機能