PHPでOOP (894レス)
上下前次1-新
165: 1 ◆SWtzLesEmM [age] 2008/01/29(火)12:34 ID:??? AAS
OOPの参考になる解説がありました。
関数、オブジェクト、クロージャ
外部リンク:d.hatena.ne.jp
>オブジェクトは、データに処理がくっついたものです。
>array.map()のように、後に後に処理を追加していく書き方は、順にコードを追えるため読みやすく、また書きやすいです。
クロージャっていう仕組みは、PHPにはないですね?><
大は小を兼ねる…クロージャの代わりにオブジェクトが使えればとりあえずOKかな?(・∀・)
166(2): 2008/01/29(火)13:15 ID:??? AAS
>>161
>wikiの文法(表記方法)が使える掲示板とか作れそう^^
PEARのText_Wiki使えばよくね?
167(1): [age] 2008/01/29(火)13:18 ID:??? AAS
>>164
> 置き換えるパターンに応じて、別々のメソッドを用意したら便利でしょうか?
本来ならば、そうなるでしょうね。それらはすべてprivateで作っておいて、
外部には、一つのインターフェースのみ(この例の場合はWrite_html()がそれに該当)
公開となるでしょう。
記号ごとに別々にメソッドを定義しておけば、記号とhtmlの関係が変わる時は、
どのメソッドを触ればよいかが分かるし、それを変更したことで、
他のメソッドには影響は無かったりします。
(これが構造化プログラムの場合は、目的のソースと目的ではないソースを
見極めるところから始まります。)
省6
168: [age] 2008/01/29(火)13:22 ID:??? AAS
>>166
学ぶために具体的に物を作るのと、実用性を考えて物を作るのは
別だと思う。なので、今回はこれでいいと考えている。
現に、初心者向けの書籍に載っているソースの実用性はゼロだ。
169: [age] 2008/01/29(火)13:59 ID:??? AAS
とりあえず、全体構成の確認のために書いてみた。
ch_to_html()は、追記の必要性がある。
[chstr.php]
<?php
class ChStr {
// メンバ
var $m_str_reg; // 正規表現文字列を格納する。
var $m_str_html; // html文字列を格納する。
// コンストラクタ
// 正規表現の文字列を受け取る。
省22
170: [age] 2008/01/29(火)14:03 ID:??? AAS
[index.html] 最初に開くファイル。
<html><body>
<form method="POST" action="./text.php"><textarea name="reg_text" cols=40 rows=4>
あああああ
いいいいい
ううううう
</textarea><br>
<input type=submit value=" 送 信 "></form>
</body></html>
[text.php]
省8
171: 1 ◆SWtzLesEmM 2008/01/29(火)14:10 ID:??? AAS
>>166
確かにそうなんですが、「勉強のため」という目的もあるので、自分で作ってみるというのもありでしょうか?^^
でも、答えが分かっている問題を解くのは楽ですね。>Text_wiki
車輪の再発明 - Wikipedia
外部リンク:ja.wikipedia.org
車輪の再発明とは、「広く受け入れられ確立した技術や解決法を無視して、同様のものを再び一から作ってしまう事」を意味する
ある技術の意味を理解させるために、意図的に車輪の再発明を行わせる場合がある
172: 1 ◆SWtzLesEmM [age] 2008/01/29(火)14:19 ID:??? AAS
wikiとか文字列を処理する仕組みは、「パーサー」とか「構文解析」っていうみたいですね(´∀`)
構文解析 - Wikipedia
外部リンク:ja.wikipedia.org
今までにいろんな仕組みが考えられてきたみたい。
…本格的にやると奥が深そうだけど、一度仕組みを勉強しておいたら、いろいろ使えそうな予感!(・∀・)
↓wikiの仕組みを自分で作っている方は結構いるみたいですねー。
PHP用の汎用WikiParser作り中
外部リンク[html]:tdiary.ishinao.net
RandomNote/PHPについて
外部リンク[php]:tbox.jpn.org
173: [age] 2008/01/29(火)14:21 ID:??? AAS
今後の課題と予定
・ch_to_html() の中身を書く。
・[text.php] の機能を充実(テキストファイルに保存するなど)させ、wikiを作る。
・上記とは別に、 ChStr クラスを使い、BBSを作る。
・ChStr クラスに clear()、SetStr() 等のメソッドをつけ加え、汎用性を持たせる。
174: 1 ◆SWtzLesEmM [age] 2008/01/29(火)14:38 ID:??? AAS
外部リンク[php]:tbox.jpn.org
RandomNoteのMain.phpは参考になるでしょうか?
preg_match
preg_replace
array_push
array_pop
などの関数を使って、文字列の切り貼りをしてるんですねー。
175(1): 2008/01/29(火)14:39 ID:??? AAS
OOPってより単にクラスの使い方書いてるように見えるのはまあいいとして
メソッドの中でstringをreturnせずにecho使うのは>>167で書いてるように汎用性って面もあるけど
処理と表示の分離って意味合いもあるからちゃんとstringで返したほうがいいよ
176: [age] 2008/01/29(火)15:39 ID:??? AAS
>>175
> OOPってより単にクラスの使い方書いてるように見えるのはまあいいとして
OOPについて説明するとなると、具体的なソースコードとは離れた方が
良くなったりしますからね。
(クラスの使い方書いているように見えるとしても、)PHPでclassを
組む場合のメリットみたいな位置づけで学んでいこうと思っています。
> 処理と表示の分離って意味合いもあるからちゃんとstringで返したほうがいいよ
確かに汎用性以外にそういう目的もありますね。
次のものでstringで返すように書き換えます。
177: [age] 2008/01/29(火)18:16 ID:??? AAS
htmlのformのコードもクラス化するのが本当の流れんだろうけれどな。
いきなりそれをやると分かりにくくなるかな・・・
178(1): に ◆lKs5QMUHoA 2008/01/29(火)19:20 ID:??? AAS
ChStrクラスのサンプルソースを投稿してた者ですが、
今までnobodyさんで書いてたけど、分かりにくくなるかと思ったので
酉入れるようにしてみます。
>>5に書いてあるように、オブジェクト指向は「変数を保持できる事」が
メリットだと思うのですが、これがWebアプリだとどうも実感が無かったりします。
リッチクライアントだと、マウスのクリックに合わせて、メソッドが呼び出され、
そのアプリケーションが終了するまでの間、各種オブジェクトの中の変数に
状態が保持されるという構造なので、そのメリットが感じられるのですが、
Webアプリでは、POSTする度にオブジェクトの変数の状態はリセット
されてしまうので、クラスを書いたとしても、結局はグローバル変数から
省3
179: 2008/01/29(火)22:51 ID:??? AAS
>>160
他の人の話のほうがよっぽど核心を突いてるよ
180: 2008/01/29(火)23:05 ID:??? AAS
>>160のはてなのリンクの4番目の話、2chの別の板でも
読んだことがあるけれど、この話本当なの?
具体的に何処でどういう商売をしての話なんだろうか。
アプリケーションを売る話?それとも開発環境用のソフトを売る話?
181: 2008/01/30(水)21:59 ID:??? AAS
ピュアな意味でオブジェクトを操作したいなら
ボタンのクリックに関する全ての画面遷移に関してserializeとunserializeを管理する必要があるだろ
<?php
require_once("hiroyuki.class.php");
$hiroyuki = unserialize($_SESSION["hiroyuki"]
182: 2008/01/31(木)07:20 ID:NaJ3keB3(1) AAS
>>178
ユーティリティクラスの再実装みたいな事を熱心にやっても
あまり意味が無いと思いますよ。
まさにあなたの言う「いちいち書くのがめんどくさい」のを回避する為に
OOPがあるんだと思います・・・
OOPの勉強なら、簡単なWEBフレームワークを自作するのが一番良いよ。
知識の無い段階でいきなりPHPでOOPって無理だと思いますよ。
背伸びせず、まずjavaやC#を学習する方が近道かもしれないよ。
183: 2008/01/31(木)08:15 ID:??? AAS
.NET 以降の VisualBasic ってどうなの?
184(1): 2008/01/31(木)17:31 ID:??? AAS
MVCモデルにそって、ユーザの入力データと、CSVファイルのデータを
読み込んで表示させるというものを作ってみました。
ファイル:全部で5つ。index.phpを実行する。
cfcontrol.php
cfview.php
index.php
cfmodel.php
csv.txt
[csv]
aaa,bbb,ccc
省7
上下前次1-新書関写板覧索設栞歴
あと 710 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.015s