のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,908人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】下らねぇ質問はID出して書き込みやがれ 89

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 : nobodyさん - 2009/11/08(日) 10:39:14 ID:??? (-5,-30,-235)
    >840
    class Greeting{
    const AT_MORNING = 'おっはー☆';
    const AT_DAYTIME = 'こんにちは';
    const AT_NIGHT = 'こんばんわー';
    const FIRST_MESSAGE = '初めまして';
    }
    class Love{
    const FIRST_MESSAGE = '好きです!';
    const END_MESSAGE = 'さようなら…二度と会わないで';
    }

    echo Greeting::AT_MORNING;

    例えば定数の場合、そこまでに通ったコードを全部読んで、定義部を探さないといけない。
    クラス定数ならば、格納先のクラスさえ分かれば、そこを探すだけで済む。
    勿論、「定数はこのファイルに全部書くこと!」という規則で運用しても同じような効果になるが、「立ち入り禁止」というルールだけ設けるのと柵を作るの、どっちが安全かの差だな。
    また、Greeting::AT_MORNINGを読むにはGreetingクラスの存在を知らなければ(requireしなければ)ならない。
    つまり、この定数を使っている箇所がどこら辺にあるのか特定しやすい。
    あとは、全体から見える位置にものを定義すると、変数名被りや定数名被りが発生しやすい。クラス定数なら、クラスさえ違えば同名になっても問題ない。
    852 : nobodyさん - 2009/11/08(日) 10:41:21 ID:??? (-5,-29,-12)
    >>850
    エラー出力見ようよ。たぶんこの場合ずばりのエラーが出てる。

    return $this->$v;
    の、vには$要らない。
    853 : nobodyさん - 2009/11/08(日) 10:41:44 ID:??? (-2,-30,-31)
    return $this->$v
    だと そのクラス内($this)の変数$vが持ってる値の変数になっちゃう
    return $this->v
    がただしい
    854 : nobodyさん - 2009/11/08(日) 10:45:24 ID:??? (+49,+22,+2)
    ありがとうございます

    >>852-853
    855 : nobodyさん - 2009/11/08(日) 10:46:05 ID:atd+IQXc (-14,+29,-4)
    ミス

    ありがとうございます
    おかげ様で解決できました
    >>852-853どうもありがとうございました
    857 : nobodyさん - 2009/11/08(日) 11:46:29 ID:??? (+57,+29,-1)
    スレを使ってデバッグするとはお主やるな
    858 : nobodyさん - 2009/11/08(日) 11:47:34 ID:??? (+35,+14,+0)
    >>855へのレスね
    859 : nobodyさん - 2009/11/08(日) 11:58:07 ID:??? (-2,-30,-26)
    857 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
    あぼ~ん

    858 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
    あぼ~ん
    860 : nobodyさん - 2009/11/08(日) 12:02:22 ID:??? (+10,-7,+0)
    >856
    staticまで知ってればとりあえず問題ない
    861 : nobodyさん - 2009/11/08(日) 12:12:54 ID:??? (+54,+30,-173)
    >>856
    「オブジェクト指向の覚え方」(というか学び方)を知りたいんですね?

    まずは、
    とある言語が「オブジェクト指向的な記述を支援してくれる部分」と、
    「オブジェクト指向というもの」自体とを
    弁別した方が良いかと。

    とある言語で後者を実践するときのものが前者。
    そのページで得られるのは、基本的には前者のみ。

    OOPそのものへの入門だったら、PHP以外の例えばJavaあたりを使ってOOPの
    解説してるとこ覗いた方が良いよ。

    それでもその質問に答えるとしたら、上から順番でどこまでってことは無いかな。
    >* クラスのオートローディング
    ↑飛ばしてもいいけど、
    >* コンストラクタとデストラクタ
    ↑飛ばせない
    てな感じで。
    862 : nobodyさん - 2009/11/08(日) 12:30:58 ID:??? (+67,+29,-47)
    Javaが一通り出来るようになればオブジェクト指向はだいたい理解出来るはず
    使いこなすにはまだまだだけど
    863 : nobodyさん - 2009/11/08(日) 12:34:58 ID:??? (+52,+29,-4)
    じゃヴぁじゃヴぁうるせえよks!
    864 : nobodyさん - 2009/11/08(日) 12:41:45 ID:??? (+66,+29,-15)
    >>862
    理解できてるから使いこなせるわけで。 順序逆だz
    865 : nobodyさん - 2009/11/08(日) 12:52:04 ID:??? (+55,+27,-47)
    PHPみたいな変数に何でも入って、evalもあるような言語に
    JavaのOOPを持ち込むのは、混乱の元だろう。
    頭固くなるからやめとけ。
    初心者はSqueakでもやっとけばいい。
    867 : nobodyさん - 2009/11/08(日) 13:36:52 ID:??? (-1,-29,-31)
    済ますも何もSimpleClassではなく別クラスのFooのインスタンスを作ってるように見えるが
    869 : nobodyさん - 2009/11/08(日) 13:46:05 ID:??? (-1,-29,-17)
    インスタンスを生成したいクラスを動的に指定する場合に便利だよ
    autoloadしたい時とかFactoryパターンの時とか
    870 : nobodyさん - 2009/11/08(日) 13:48:04 ID:??? (+52,+24,-21)
    new演算子の右辺に変数が使えるって例だな
    可変変数の一種だ
    871 : nobodyさん - 2009/11/08(日) 13:52:41 ID:??? (+37,+14,-2)
    可変変数の一種などではなく可変関数
    http://www.php.net/manual/ja/functions.variable-functions.php
    872 : nobodyさん - 2009/11/08(日) 14:29:44 ID:??? (-11,-30,-32)
    >>866
    >$obj= new SimpleClass();

    これだってインスタンスを作成してるわけだが・・・
    873 : nobodyさん - 2009/11/08(日) 17:28:03 ID:??? (+56,+29,-36)
    >>866
    クラスってのはクッキー生地の型抜き用の型で、
    インスタンスはそれで作られた個別のクッキー(生地)。

    抜き型だけあってもそれを使わないと(newしないと)食えるクッキーの存在は生成されない。

    てな感じでどうだ?
    874 : nobodyさん - 2009/11/08(日) 17:52:29 ID:??? (+15,-19,-14)
    >>873
    スタティックメソッドは?
    875 : nobodyさん - 2009/11/08(日) 17:55:43 ID:??? (+57,+29,-29)
    最初に入れる具を決めて皮を作るか、とりあえず具は後で買ってくると決めて皮を作るかの違い

    出来るものはどちらにしても肉まん・あんまん・中華まん。
    876 : nobodyさん - 2009/11/08(日) 18:00:44 ID:??? (-7,-30,-132)
    >868
    変数$classNameの値に応じて、生成するインスタンスを変えられる。
    class Foo{
    function say_name(){
    echo 'foo foo foo!';
    }
    }
    class Bar{
    function say_name(){
    echo 'Bar, bar, BAAAAAR';
    }
    }

    $instance = new $className();
    $instance->say_name();

    クラスに同じ名前同じ引数のメソッドがあり、その中身のロジックが全然違う場合なんかに使える。
    878 : nobodyさん - 2009/11/08(日) 18:59:39 ID:??? (+51,+28,-2)
    なんで試さんの?
    879 : nobodyさん - 2009/11/08(日) 19:13:09 ID:QzQ1Ze2q (-25,+29,-1)
    できた、役に立たない奴らだ
    880 : nobodyさん - 2009/11/08(日) 20:10:53 ID:??? (+46,+28,+0)
    次の方どーぞ。
    881 : nobodyさん - 2009/11/08(日) 21:05:50 ID:8S6RVioX (+29,+29,-70)
    classを作っておくのは同じコードを2度も書かないためってことでしょうか?
    掲示板を作るとき「ファイル操作・文字列処理」をしますのでそういうのをクラスにまとめることによtt
    いろんなスクリプトで再利用できるという認識でよろしいでしょうか?
    882 : nobodyさん - 2009/11/08(日) 22:33:56 ID:??? (+41,+18,-12)
    再利用できるように作ってあれば。
    884 : nobodyさん - 2009/11/09(月) 10:54:46 ID:??? (+0,-22,-9)
    関数だと必要な部分のみ使えないの?
    885 : nobodyさん - 2009/11/09(月) 10:57:53 ID:??? (+57,+29,-15)
    オブジェクト指向のオの字も知らないようだと、クラスを作る意味はまるで無い
    886 : nobodyさん - 2009/11/09(月) 11:09:38 ID:utcN5JBF (-20,+29,-59)
    クラスは何つーか、製作ツール作る感じじゃね?
    RPGツクールとかそんな感じで
    逆にfunctionなどの関数はそのまま関数作ったり
    RPGツクールの中の、敵にダメージを与える計算部分とか
    887 : nobodyさん - 2009/11/09(月) 11:12:00 ID:??? (+61,+29,-48)
    クラスの目的は…
    少なくとも出発点はデータの保護、というかデータに対して可能な操作の定義。>>881

    つか、もうそれってPHPの質問と違うやん。
    OOもしくはOOP一般じゃろ。
    888 : nobodyさん - 2009/11/10(火) 00:04:02 ID:??? (+63,+30,-86)
    学校にもAクラス、Bクラスってあるだろう。
    それと同じ意味だよ。

    A組 が 廊下掃除担当
    B組 が 体育館掃除担当
    C組 が プール掃除担当

    という感じにクラス毎に役割を振っておけば、
    後々管理が楽になるだろう?

    「廊下に関する事なら、A組に聞けばいい。」

    ってな具合で。
    889 : nobodyさん - 2009/11/10(火) 00:22:25 ID:??? (+15,-12,-8)
    関数とオブジェクトのローカル変数をセットにしておける。
    継承が使える。

    これだろ。
    890 : nobodyさん - 2009/11/10(火) 00:28:25 ID:??? (+57,+29,-19)
    無駄に難しく考えないで、自分のレベルで便利に使えるところから使えばいいんだよ。
    クラスつかうなんてのは、手段であって、目的ではないからな。
    891 : nobodyさん - 2009/11/10(火) 02:31:13 ID:??? (+57,+29,-8)
    同じく、システムの中である程度一貫性持ってれば扱い方は人によって個性出てもいいと思う
    892 : nobodyさん - 2009/11/10(火) 02:57:15 ID:??? (+0,-29,-21)
    OOP本のサンプルって、
    Animalクラスを継承してDogクラスとかCatクラスを作るって例が多いけど、
    わかりやすいようで解りづらいよなw
    893 : nobodyさん - 2009/11/10(火) 03:10:25 ID:??? (+7,-29,-19)
    >>892
    >Animalクラスを継承してDogクラスとかCatクラスを作るって例
    この手の解説は参考にならないって、歴史が証明してるよなw
    894 : nobodyさん - 2009/11/10(火) 03:44:55 ID:??? (+57,+29,-39)
    最初は関数で作って、後々追加案件で処理毎にクラス化してる
    配列でまとめてあると、後で弄り易い。
    895 : nobodyさん - 2009/11/10(火) 05:31:53 ID:??? (+76,+29,-17)
    それ、クラスである必要があるコードでなかったりしないか
    896 : nobodyさん - 2009/11/10(火) 06:59:46 ID:??? (+64,+29,-78)
    >>893
    そういう概念の話は腐るほど聞いても、じゃあいざ実装しようとすると
    あれどれがDogでAnimalなんだっけ、いやそもそもクラスにする必要あるのかこれ?
    と思考の海に沈む

    まっとうなOOP本読めばいいんだろうけど
    897 : nobodyさん - 2009/11/10(火) 08:03:12 ID:T58KxytE (+32,+29,-33)
    同じような方向の質問になるけど
    PEARとかでよくファクトリークラス(?)を使って
    クラスからクラスを作ってたりするけど、
    あれってどういう理由があるの?
    898 : nobodyさん - 2009/11/10(火) 09:28:55 ID:??? (+52,+30,+0)
    900 : nobodyさん - 2009/11/10(火) 09:56:23 ID:??? (+62,+29,-58)
    俺の好みで言うと、コーディング時に種類が決まってるパーツは
    new classNameで明示的にインスタンス化したいな。
    パラメータ指定してインスタンス作ってからaddとかするように
    書くだろうな。
    ま、好みの話だからさらっと流してくれ。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について