PHPでデータクラスとでもいうのでしょうか、そういうものって無いのでしょうか?
C言語でいうところのMFCやSTLのようなものです。
例えばURLの文字列を保持するクラスだったら、メンバー変数はURLの文字列だけ。
メンバー関数はGetter/SetterのほかにURLの文字列をドメイン部とディレクトリ部を分ける便利関数 etcを実装
他にはユーザー情報を保持するクラス。メンバー変数には氏名、生年月日、住所、電話番号、メールアドレスを実装
メンバー関数はGetter/Setterのほかに生年月日から年齢を算出する便利関数を実装。
このようなものは、Web開発をしていればいくらでも利用する機会がありそうなのですが、あまり見当たりません。
皆さんはどうしているのでしょうか? その都度要件にあわせて作成しているのでしょうか?
(1)個別のライブラリや拡張関数などをさがして使う
例:http://www.best-php-scripts.com/library_classes.htm
(2)PHPのPEARを使う
例:http://pear.php.net/manual/ja/
(3)フレームワークを使う
例:http://handsout.jp/slide/1011
この組み合わせですね。最近なら(3)をベースに(2)や(1)をケースに応じて
使うというかんじでしょうか。例に挙げられているURLの解析、分解や
データモデルの操作は上の(3)のスライドで紹介されている各フレームワーク(FW)
は形は違えども実装してます(というかそれをやるのが目的ですから)。
一度、(3)にあるFWのうちどれか、たとえばコードが軽いCodeIgniterとか
(紹介はされてませんが)CodeIgniter派生のKohana(http://www.kohanaphp.com/)
などをダウンロードして実感されるのがいいかと思います。
>その都度要件にあわせて作成しているのでしょうか?
だいたいそうです。ただし仕様書から半自動作成をしています
>他にはユーザー情報を保持するクラス。メンバー変数には氏名、生年月日、住所、電話番号、メールアドレスを実装
>メンバー関数はGetter/Setterのほかに生年月日から年齢を算出する便利関数を実装。
上記もそうですが、なんらかのフレームワークを採用すると、データ保持クラスのようなものが実装しやすい
仕組みになってます。
ありがとうございます。
仕様書から半自動生成なんてこともできるのですね。
(1)個別のライブラリや拡張関数などをさがして使う
例:http://www.best-php-scripts.com/library_classes.htm
(2)PHPのPEARを使う
例:http://pear.php.net/manual/ja/
(3)フレームワークを使う
例:http://handsout.jp/slide/1011
この組み合わせですね。最近なら(3)をベースに(2)や(1)をケースに応じて
使うというかんじでしょうか。例に挙げられているURLの解析、分解や
データモデルの操作は上の(3)のスライドで紹介されている各フレームワーク(FW)
は形は違えども実装してます(というかそれをやるのが目的ですから)。
一度、(3)にあるFWのうちどれか、たとえばコードが軽いCodeIgniterとか
(紹介はされてませんが)CodeIgniter派生のKohana(http://www.kohanaphp.com/)
などをダウンロードして実感されるのがいいかと思います。
スライドの冒頭で「素のPHPコードが恥ずかしい」とあり、恥ずかしくなりました(笑
CakePHP/CodeIgniterあたりから試してみたいと思います。
>PHPのクラスを公開しているサイトを探しています。
両方とも英語サイトですが・・・
【Hotscript】
【PHP classes】
>皆さんはどうしているのでしょうか?
開発の規模などにもよりますが、
フレームワークを利用する場合は、フレームワークに任せてます。
ただ、フレームワークを利用できない場合や利用しない場合などは、
上記のURLを探して、微妙な部分を改変して使ってます。
どうしてもない場合は、よく利用しそうなものは、
設定をかえるだけで使いまわせるように汎用性を考慮して独自で作ってます。
ありがとうございます。
やはりフレームワーク以外では公開されているものの流用か自作になりますね。
もともと、PHPはオブジェクト指向というよりも、「素早く動的WEBサイトを作る」というところからスタートしました。Get/PostなどについてはPerlより洗練された方法を実現しています。
ちょっと便利なライブラリーということで、Pearプロジェクトが始まりました。しかし、これは必要なものだけとはいかないんですね。巨大な関数群といったほうがいいかも知れません。おっしゃる会員認証などに耐えられなかったり、中途半端な面もあります。
そうはいってもわかりやすい言語ですから、もっと大規模な開発に耐えられるようにとMVCモデルを実装した多くのフレームワークがあります。私はCakeしかよく知らないのですが、URL分解などはやってくれます。命名ルールが大事ですけどね。
最近、コメントされてるようにこんなフレームワークがホットだしぃ
フレームワークの習得は、いろいろあることと、バカにならない時間と手間が必要ですから、みんなに広まるかというと疑問に思ってます。おそらく開発現場で協力会社を使うとなると、あきらめることになるかも知れません。
本格的なオブジェクト指向はPHP5からといってもいいと思います。ですから豊富なクラスとはまだいかないようです。これからではないでしょうか。
スライドの冒頭で「素のPHPコードが恥ずかしい」とあり、恥ずかしくなりました(笑
CakePHP/CodeIgniterあたりから試してみたいと思います。