私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレせっかくだからPHPで掲示板作ってみませんか?
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ☆
レスフィルター : (試験中)
>>100
Composit Pattern を使うってことだね。
・class Thread
・class LeafThread extends Thread
・class CompositThread extends Thread
を用意して、
class composit {
// Thread のリストを保持
var $thread_list = array();
:
function addThread($thread) {
// $thread が Leaf/Composit のインスタンスだったら
// 追加許可。
}
:
}
という感じにすればいいかもね。
とりあえず 2ch 相当の機能があればいいかな?と思ってそれ以上は
考えていなかったよ。
先のアクセス権については
・ユーザー情報(認証情報)を格納する class User
・Thread クラスでアクセス権を保持するように責務を追加
ということで実現できるかな。
Composit Pattern を使うってことだね。
・class Thread
・class LeafThread extends Thread
・class CompositThread extends Thread
を用意して、
class composit {
// Thread のリストを保持
var $thread_list = array();
:
function addThread($thread) {
// $thread が Leaf/Composit のインスタンスだったら
// 追加許可。
}
:
}
という感じにすればいいかもね。
とりあえず 2ch 相当の機能があればいいかな?と思ってそれ以上は
考えていなかったよ。
先のアクセス権については
・ユーザー情報(認証情報)を格納する class User
・Thread クラスでアクセス権を保持するように責務を追加
ということで実現できるかな。
Google で検索すればいろいろ出てくるよ。
とりあえずこの辺かな。
http://www.itboost.co.jp/php/php_15.php
http://www.pugly.juice.or.jp/pugly/postgres/php/guide6.html
とりあえずこの辺かな。
http://www.itboost.co.jp/php/php_15.php
http://www.pugly.juice.or.jp/pugly/postgres/php/guide6.html
>>104
ありがとうございます 電動ナナシ様。
ありがとうございます 電動ナナシ様。
>>106
様はつけないでいいよ。ちょっと気恥ずかしいから。
様はつけないでいいよ。ちょっと気恥ずかしいから。
って >>99 を良く読んでなかった... 鬱
ちょっとアルバイトで phpnuke いじってるんだけど、
ひどいコーディングだ。オブジェクト指向してないのはまだしも
コード自体がスパゲッティで混乱しまくってる。
何であんなにもてはやされているのかわからん。
やっぱりここでなんかまともなの作らなきゃなぁとか思ったり。
コードの再利用性を重点に置いたほうがいいと思う。
それができない言語じゃないと思うし。
とか思う。
と思う。
ひどいコーディングだ。オブジェクト指向してないのはまだしも
コード自体がスパゲッティで混乱しまくってる。
何であんなにもてはやされているのかわからん。
やっぱりここでなんかまともなの作らなきゃなぁとか思ったり。
コードの再利用性を重点に置いたほうがいいと思う。
それができない言語じゃないと思うし。
とか思う。
と思う。
>>110
やっぱOOPするには、php4の方がいいですか? 文字コードUTF8を使いたい関係でphp3+i18nで野郎と思ってるのですが。
やっぱOOPするには、php4の方がいいですか? 文字コードUTF8を使いたい関係でphp3+i18nで野郎と思ってるのですが。
>>111
オブジェクト指向関連はどう変わったんだっけ?
俺としては関数の前方参照ができるとか、
jcode mbereg とかがもうすぐ統合されるとかの部分で
php4 がいいんじゃないかと思ってたんだが。
逆に php3 との互換性を持たせるにはどれくらい
考えなきゃいけないことがあるんだろ?
php3 への対応はそれ次第じゃないかな?
オブジェクト指向関連はどう変わったんだっけ?
俺としては関数の前方参照ができるとか、
jcode mbereg とかがもうすぐ統合されるとかの部分で
php4 がいいんじゃないかと思ってたんだが。
逆に php3 との互換性を持たせるにはどれくらい
考えなきゃいけないことがあるんだろ?
php3 への対応はそれ次第じゃないかな?
そんなこと言わずに >>113
避けられるわけないんだから
避けられるわけないんだから
>>118
ログの書き込み・削除を別クラスにする意義がいまいちよく分からない。
クラス設計に正解はないので、以下のはあくまで一つの案として捉えて
ほしい。
2ch というかあめぞう型掲示板で、意味のあるデータの最小単位はたぶん
各メッセージ。そしてメッセージのコンテナとしてのスレッドがあり、
スレッドのコンテナとしての板があり、板のコンテナとして BBS がある
という階層構造になっていると思われる。
そうだとすると、削除には実は 3 つの種類があることになる。つまり
メッセージの削除とスレッドの削除と板の削除。この削除は対象となる
オブジェクトのコンテナから当該オブジェクトへの参照をなくすことに
よって実現できる。そうだとすると
・メッセージ削除 = コンテナであるスレッドからメッセージへの参照を解除
・スレッド削除 = コンテナである板からスレッドへの参照を解除
・板削除 = コンテナである BBS からメッセージへの参照を解除
ということになる。つまり、削除機能は、上位のコンテナの備えるべき
責務として構成できる。
書き込みというのは、逆に下位要素のコンテナへの追加として表現できる。
ちょうど削除と逆の関係が成立する。
このように書き込み・削除はともに削除対象の上位のコンテナの責務と
して表現できるから、クラスを別にする意味はそれほどないと思う。
よって継承についてはそれほど悩む必要はないと思う。
ログの書き込み・削除を別クラスにする意義がいまいちよく分からない。
クラス設計に正解はないので、以下のはあくまで一つの案として捉えて
ほしい。
2ch というかあめぞう型掲示板で、意味のあるデータの最小単位はたぶん
各メッセージ。そしてメッセージのコンテナとしてのスレッドがあり、
スレッドのコンテナとしての板があり、板のコンテナとして BBS がある
という階層構造になっていると思われる。
そうだとすると、削除には実は 3 つの種類があることになる。つまり
メッセージの削除とスレッドの削除と板の削除。この削除は対象となる
オブジェクトのコンテナから当該オブジェクトへの参照をなくすことに
よって実現できる。そうだとすると
・メッセージ削除 = コンテナであるスレッドからメッセージへの参照を解除
・スレッド削除 = コンテナである板からスレッドへの参照を解除
・板削除 = コンテナである BBS からメッセージへの参照を解除
ということになる。つまり、削除機能は、上位のコンテナの備えるべき
責務として構成できる。
書き込みというのは、逆に下位要素のコンテナへの追加として表現できる。
ちょうど削除と逆の関係が成立する。
このように書き込み・削除はともに削除対象の上位のコンテナの責務と
して表現できるから、クラスを別にする意味はそれほどないと思う。
よって継承についてはそれほど悩む必要はないと思う。
>>118
それから継承は最近では「置換可能性があること」を意味すると言われて
いる(『C++ FAQ』を参照のこと)。例えば「鳥」クラスのサブクラス
として「鳩」クラスと「雀」クラスを定義するということは、「鳥」が
使われている部分を常に「鳩」や「雀」で置き換えることができることを
意味する。
> こういう場合、掲示版を表示するクラスboard.classを作って、
> それを継承したthread.classを作るのがよいのでしょうか。
あめぞう型の場合、メッセージをスレッドで、スレッドを板で置き換える
ことはできない。スレッドの中にスレッドを入れたりすることができない
ということ。そうだとすると、置換可能性がないからここで継承を使うのは
適切ではないと思われる。
それから継承は最近では「置換可能性があること」を意味すると言われて
いる(『C++ FAQ』を参照のこと)。例えば「鳥」クラスのサブクラス
として「鳩」クラスと「雀」クラスを定義するということは、「鳥」が
使われている部分を常に「鳩」や「雀」で置き換えることができることを
意味する。
> こういう場合、掲示版を表示するクラスboard.classを作って、
> それを継承したthread.classを作るのがよいのでしょうか。
あめぞう型の場合、メッセージをスレッドで、スレッドを板で置き換える
ことはできない。スレッドの中にスレッドを入れたりすることができない
ということ。そうだとすると、置換可能性がないからここで継承を使うのは
適切ではないと思われる。
>>121
電動さんの蘊蓄をうまく引き出すような質問をすべし
電動さんの蘊蓄をうまく引き出すような質問をすべし
1学年あたりの人数が多いとき、ひとつのクラスに纏めると
先生の目が行き届かないので、一クラス40人程度に分けます。
先生の目が行き届かないので、一クラス40人程度に分けます。
PHPってメソッドをオーバーライドするとき、スーパークラスの同名のメソッドを呼び出すことはできないんでしょうか?
サブクラスで細かいことをあれこれさせようとするとき、やりにくくてしょーがないんですが。
サブクラスで細かいことをあれこれさせようとするとき、やりにくくてしょーがないんですが。
あ、スレ趣旨と関係ない質問してしまったですね。反省。
>>127
PHP のhttp://www.php.net/manual/en/language.oop.php では
以下のようなやり方が示されている。
<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str1, $str2) {
Parent::myMethod($str1);
$this->value = $str2;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String for Parent", "String for Child");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
PHP のhttp://www.php.net/manual/en/language.oop.php では
以下のようなやり方が示されている。
<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str1, $str2) {
Parent::myMethod($str1);
$this->value = $str2;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String for Parent", "String for Child");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
やばい、違うのを書いてしまった。正しくはこちら。
<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str) {
Parent::myMethod($str);
$this->value = $str;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str) {
Parent::myMethod($str);
$this->value = $str;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
PHP+MySQLで2ch型の掲示板を作ろうと思うのですが、テーブル1個では
無理ですかね。
MiniBBSタイプの追加していくだけのものならできるのですが、レス付きの
age sage のさせ方が思いつかなくて。
上のMiniBBSタイプの掲示板程度の簡単なものしか作ったことがなく
経験は浅いです。<この程度でMySQL使うなよーって言われそうですが
無理ですかね。
MiniBBSタイプの追加していくだけのものならできるのですが、レス付きの
age sage のさせ方が思いつかなくて。
上のMiniBBSタイプの掲示板程度の簡単なものしか作ったことがなく
経験は浅いです。<この程度でMySQL使うなよーって言われそうですが
>>142
それだと板名、スレ名は別テープルになってしまうのでは。
1テーブルにするにはvarchar型の板名、スレ名フィールドにしなければ。
でも order by の部分がどうなるのか複雑すぎて考えたくない。ナナシたんなら分かるかも。
それだと板名、スレ名は別テープルになってしまうのでは。
1テーブルにするにはvarchar型の板名、スレ名フィールドにしなければ。
でも order by の部分がどうなるのか複雑すぎて考えたくない。ナナシたんなら分かるかも。
>>144
板名とスレ名のことを忘れてた。
となると、板IDなんていらないのかな、1テーブルで全てを
処理しようとするなら。類似スレタイトルが出てくる可能性も
あるわけだから、スレIDは良いとしても、スレ名フィールドも
必要だね。
掲示板表示に関しては1つのSQL文で全ての処理を行うのは
無理じゃないかなぁ。特に2ch型の場合。
板名とスレ名のことを忘れてた。
となると、板IDなんていらないのかな、1テーブルで全てを
処理しようとするなら。類似スレタイトルが出てくる可能性も
あるわけだから、スレIDは良いとしても、スレ名フィールドも
必要だね。
掲示板表示に関しては1つのSQL文で全ての処理を行うのは
無理じゃないかなぁ。特に2ch型の場合。
みんなの評価 : ☆
類似してるかもしれないスレッド
- こんにちは、PHPプロの方。教えてください。 (187) - [39%] - 2019/5/9 7:45
- phpのツリーのアルゴリズムがわかんねんんだよ! (66) - [36%] - 2022/10/19 16:30
- PHP仕様主旨と精神ってなんだとおもいますか? (166) - [31%] - 2022/8/1 7:00
- PHPで作られた有名サイトってあるの? (736) - [31%] - 2019/5/9 7:45 △
トップメニューへ / →のくす牧場書庫について