トップページ⇒php
1001コメント332KB

【PHP】下らねぇ質問はここに書き込みやがれ 55

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/09/29(土) 18:35:56ID:YlkpEUW6
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで


0267nobodyさん2007/10/03(水) 22:50:18ID:???
>>265
function hogeをC.phpに移してAとBからincludeすれば?
0268nobodyさん2007/10/03(水) 23:18:29ID:???
マズい作り方したね。
0269nobodyさん2007/10/03(水) 23:26:48ID:???
まぁ最初の頃はありがち
02702652007/10/03(水) 23:31:05ID:gbZJiSoX
>>266
二重定義は回避不能でしたか・・・

>>267-269
今後プログラムするときは気をつけたいのですが>>267さんの言うとおり
関数は一つにつき一つのphpファイルの中で定義して使い回すのが
正しい作り方になるのでしょうか?
0271nobodyさん2007/10/03(水) 23:40:21ID:???
というか用途ごとだろ
0272nobodyさん2007/10/03(水) 23:44:19ID:???
>>267
それだと同じファイルからAとBを読み込んだ時点でエラーが生じるんでね?
0273nobodyさん2007/10/03(水) 23:47:35ID:???
何故メインのファイルにその関数を書かない?
0274nobodyさん2007/10/04(木) 00:36:17ID:2S6z8FqV
echoってなんなのでしょうか?
echo 1+2がなぜ3になるのですか?
echoは引数を評価する関数なんですか?
0275nobodyさん2007/10/04(木) 00:45:23ID:???
>>272
すまん。include_once(C.php)だ (だと大丈夫だよね?)

C.php -------------------------
function hoge(){}

A.php -------------------------
include_once("C.php");

B.php -------------------------
include_once("C.php");

Main.php -------------------------
include_once("A.php");
include_once("B.php");

$foo = hoge();
0276nobodyさん2007/10/04(木) 00:45:29ID:???
>>270
まぁ、普通は同じ関数を複数のファイルに記述したりはしないな。
0277nobodyさん2007/10/04(木) 01:00:55ID:???
>>274
つphp.net/echo
0278nobodyさん2007/10/04(木) 01:09:13ID:???
>>261
俺も$_REQUEST使ってた...。

じゃやっぱり$_POSTと$_GETを書いて、どちらか入力されているか
チェックして変数に入れる方がいいみたいだな。
0279nobodyさん2007/10/04(木) 01:27:57ID:???
関数名を重複させるなんて思考なかったぜ
0280nobodyさん2007/10/04(木) 02:02:54ID:???
prefixでも付ければ?
0281nobodyさん2007/10/04(木) 02:03:28ID:???
検索ページならGETのみでいいんじゃないかい?
URLをそのまま他人に教えたりできるし
POST なら前ページと次ページのみのフォームボタンにする
0282nobody2007/10/04(木) 02:08:25ID:wWWlpRkK
どうも、こんばんは。
早速質問ですが・・・
http://aki.adam.ne.jp/php/script/thumb.php
のサムネイルモジュールを使っているのですが・・・
thumb.phpで画像へのパスが設定されていませんとなってしまってサムネイル画像が×になってしまいます。

thumb.phpで画像へのパス設定って何行目ぐらいに書いてありますか?
ご回答よろしくおねがいします。
0283nobodyさん2007/10/04(木) 02:17:48ID:???
知るかボケ
0284nobody2007/10/04(木) 02:21:00ID:???
そうですか・・・ありがとうございます。
0285nobodyさん2007/10/04(木) 02:23:12ID:???
>>282
おいおい・・・230行足らずのスクリプトだぞorz
しかもしょっぱなにヒントあるのに。
ソース見たり調べてないだろ
0286nobodyさん2007/10/04(木) 02:33:58ID:VoLA0M9Q
<?php
$saza = ("$tekuno" and "$posh");
$saza1 = ("$tekuno" or "$posh");
$saza2 = ("$tekuno" != "$posh");
?>

<html><head>
<?php if ($saza){echo 'ああああ';} ?>
</head>
<body>
<?php if ($saza1){echo 'いいいい';} ?>
<?php if ($saza2){echo 'うううう';} ?>
</body><html>

これを
<saza>ああああ</saza>
<saza1>ああああ</saza>
<saza2>ああああ</saza>
と置き換えて反映させたいのですが
どうすればよいのでしょうか?

置換タグ等で調べましたがわかりませんでした。
深夜ですがよろしくお願いします。
02872862007/10/04(木) 02:36:00ID:VoLA0M9Q
<saza1>いいいい</saza> 
<saza2>うううう</saza> 

すみません間違えていました
0288nobodyさん2007/10/04(木) 03:28:51ID:???
>>286
変数名を取得って事だよね? 自分も調べたけど出来なかったような記憶がある。

変数名の取得関数getVarName()があったとして↓みたいになればいいって事でしょ?
$saza = ("$tekuno" and "$posh");
if($saza) {$var = getVarName($saza); echo "<$var>ああああ</$var>";}
# =>  <saza>ああああ</saza>


可変変数使っても無駄かな?
$sz ="saza";
$saza = ("$tekuno" and "$posh");
$sz1 = "saza1";
$$sz1 = ("$tekuno" or "$posh");

if($$sz) {echo "<$sz>ああああ</$sz>";}
if($$sz1){echo "<$sz1>いいいい</$sz1>";}
0289nobodyさん2007/10/04(木) 03:38:32ID:???
>>282
IDがすげえな
0290nobodyさん2007/10/04(木) 04:14:55ID:???
>>270
クラス化は一つの解決方法でもあるよね。本来は抽象化が目的だけど。
俺の作ったクラスには各クラスに必ずError()があるし。
逆に↑を非効率的だ!ってイライラする人もいるけど。
(コピペがそんなに面倒かね?)
0291nobodyさん2007/10/04(木) 04:17:11ID:???
>>278
つうかPHPって、hoge.php?test=1にpostすると、
$_GETと$_POSTの両方が取得できるよね。
02922652007/10/04(木) 04:17:26ID:cABdO5b9
>>290
> クラス化は一つの解決方法でもあるよね。本来は抽象化が目的だけど。

私の持っているPHPの本にはクラスのクの字も出てこなかったりしますorz・・・
おそらくクラスがPHPに策定される前に出た本を買ってきてしまったかと(´・ω・`)・・・
0293nobodyさん2007/10/04(木) 04:17:51ID:???
コピペの関数は最初が楽なだけで
仕様変更とか入ったときに恐ろしく面倒。
バグの元にもなる。
0294nobodyさん2007/10/04(木) 04:18:30ID:???
>>282
そのページの「設置方法」を100回読め
0295nobodyさん2007/10/04(木) 04:24:42ID:???
>>292
クラスなんてそんなに難しい概念じゃないよ。
まぁ概念を説明してる本を読むと難しそうに(高尚そうに?)書いてあるけど。
使い方は簡単。でも、思想を理解しないと、メリットや使い方を間違えると思うけどね。

>>293
コピペすることを前提に作ってる関数は、抽象化されてるからバグの温床になったことはないなぁ。
0296nobodyさん2007/10/04(木) 04:28:21ID:???
中途採用でスキル表にPHPが使えるって書いてある奴が
初日に -> ってなんですか?って質問してきた事を思い出した

入門書ってクラスの説明が少なかったり全く無い本が多い気がする
どうして駄目プログラマーを量産するのか
0297nobodyさん2007/10/04(木) 04:36:25ID:???
独り言はチラシの裏にでもかいとけ
02982862007/10/04(木) 04:48:11ID:VoLA0M9Q
>>288

case: $sazaの場合
<saza>〜</saza>で〜を表示すると言う事です。

質問の内容の書込みが全く間違っていました。
すみませんでした。

<html><head> 
<saza>ああああ</saza>
</head> 
<body> 
<saza>ああああ</saza>
</body><html> 
ああああを表示。

02992032007/10/04(木) 05:10:31ID:???
すまん、ID表示も環境記載もしてなかったな。
質問したGIFアニメをそのままの状態でトリミングする方法だけど

1.imagickでGIFアニメを読み込み(バージョンはimagick2のRC4)
2.リストの中に画像全てに対してトリミング処理
3.coalesceImagesで画像を結合
4.writeImagesで引数にtrueを指定して書き出し

としてみたら何とかなった。
俺と同じような事で迷っている人ここに来るかもしれないから、一応書き残しておく。
0300nobodyさん2007/10/04(木) 06:39:53ID:???
<?php
define ('HUGA','/tmp/huga');
if (($fp = fopen(HOGE, "w")) == FLASE)
exit;
sleep(100);
?>
というスクリプトで
自分としてはfopenの引数が違うので実行できないと思ったのですが、
なぜかエラーが出ないばかりか、
実行までできて、しかもsleepもしてしまいます。
どうしてでしょうか?
0301nobodyさん2007/10/04(木) 06:45:35ID:???
>>300
>>1
0302nobodyさん2007/10/04(木) 06:45:41ID:???
>>300
>自分としてはfopenの引数が違うので実行できないと思ったのですが、
間違ってないじゃん

fopen ( string $filename, string $mode [, bool $use_include_path [, resource $context]] )
0303nobodyさん2007/10/04(木) 07:21:11ID:???
>>300
flaseってなんだよfalseだろ

マニュアルちゃんとよめよ
>エラー / 例外
>オープンが失敗するとこの関数は FALSE を返し、 E_WARNING レベルのエラーを発行します。
て書いてあるじゃん

特に設定もしなければ表示はされないが
Use of undefined constant HOGE - assumed 'HOGE
ていうNoticeレベルのエラーがちゃんと出てる

あとソースの書き方が汚いのでどうにかしてちょうだい
0304nobodyさん2007/10/04(木) 12:54:21ID:???
>>298
オレだけかも知れないがいまいち質問がわからん。
何を作ろうとしてるの? 具体的なソース掲示した方がわかりやすいかも
0305nobodyさん2007/10/04(木) 13:10:09ID:???
>>304
相手にしない方がいい
自分の伝えたい事を正しく表現できない奴は人の話も正しく理解できない
03062982007/10/04(木) 14:36:56ID:r3u5qyzl
規制中なので携帯から

>>304
どうもすみません。

<saza>ああああ</saza>
<saza1>いいいい</saza1>
<saza2>うううう</saza2>
と書いておき
$saza = 1;の場合
いいいい
のみを表示したいのです。

実際
$saza = 1;
<?php if ($saza){echo 'ああああ';} ?>
<?php if ($saza1){echo 'いいいい';} ?>
<?php if ($saza2){echo 'うううう';} ?>
echo >>いいいい
で今は動作していますが、ページ内で記述が
ごちゃごちゃになるので
自分なりの置換タグが出来れば
楽かと思い質問しました。

>>305
確かに。
これで最後にします。
0307nobodyさん2007/10/04(木) 14:56:02ID:???
1.<>内の文字列を取る
2.その変数が1かどうかを判定する
3.タグで囲まれた部分を表示する
0308nobodyさん2007/10/04(木) 15:29:57ID:???
>>306
つりか?突っ込んでほしいのか?代入ってわかるか?
実際以降のスクリプトだと"ああああ"しか表示されないだろ?
0309nobodyさん2007/10/04(木) 15:33:00ID:???
コンパイルのときに configure に与えたパラメータを
phpinfo() で見ることができてたようなきがするんだが、
今見たら出力されないんだ。
俺の記憶違いかな?
確認する方法ってないのかな?

0310nobodyさん2007/10/04(木) 15:35:28ID:???
>>309
普通に書いてあるから、よく見れ
03113092007/10/04(木) 16:28:47ID:???
>>310
うううー
ttp://www.linux-user.de/ausgabe/2005/08/047-php/phpinfo.png
では、Build Date の下に Configure Command あるけど、
俺のところでは これが抜けてるんだ
トリはdebian etch
sargeのときは表示されてたような希ガス
03122982007/10/04(木) 16:32:00ID:r3u5qyzl
>>308
すいません釣りじゃないです。
$saza = $aa
でおねがいします。
0313nobodyさん2007/10/04(木) 16:35:36ID:WKEPKRFz
>>311
phpのバージョンとconfigureした時のオプションは?
0314nobodyさん2007/10/04(木) 16:41:17ID:WKEPKRFz
>>311
確認したいだけなら /usr/local/src/php-5.2.1/config.status とかで見れる。
これは俺の環境でだから自分の環境でソースまでのパスの下にconfig.statusがあるってことね
0315nobodyさん2007/10/04(木) 17:05:37ID:3TfT8CvK
質問します
会員管理システムで、ログイン後ユーザ情報編集画面に移るようにしたいんですが、
ログイン用のIDとPassは名前や電話番号などのユーザ情報テーブルの
中に入れてもいいんでしょうか?
それとも、ログイン確認用の専用のテーブルを持たせるべきでしょうか
みなさんはどのようにしていますか? 
だいたいこんな感じというのを教えてください。 よろしくお願いします
0316nobodyさん2007/10/04(木) 17:15:57ID:???
板違い
0317nobodyさん2007/10/04(木) 17:16:38ID:???
だいたいこんな感じ、でいいのか
0318nobodyさん2007/10/04(木) 17:17:50ID:???
PHPに関係ない
正規化について調べて、次からデータベース板で
0319nobodyさん2007/10/04(木) 17:19:39ID:???
>>298
$tekuno とか $posh が何なのかわからんし、書き込みの内容もいまいち理解できんのだが
本気で悩んでそうなのでなんとなくレスしてみる
見当違いの回答だったらごめんね
<?php
// $tekuno $posh が処理されていると仮定

$saza = ($tekuno && $posh) ? "<saza>ああああ</saza>" : "";
$saza.= ($tekuno || $posh) ? "<saza1>いいいい</saza1>" : "";
$saza.= ($tekuno != $posh) ? "<saza2>うううう</saza2>" : "";

echo <<< HTML
<html>
<body>
{$saza}
</body>
</html>
HTML;
?>
03203092007/10/04(木) 17:19:41ID:???
パッケージで入れたから
config.status
はないんだわ
ソースパッケージからみつけた
COMMON_CONFIG=--build=$(PHP5_BUILD_GNU_TYPE)-gnu --host=$(PHP5_HOST_GNU_TYPE)-gnu
--mandir=/usr/share/man --enable-memory-limit --disable-debug --with-regex=php
--disable-rpath --disable-static --with-pic --with-layout=GNU --with-pear=/usr/share/php
--enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-track-vars
--enable-trans-sid --enable-bcmath --with-bz2 --enable-ctype --with-db4 --without-gdbm
--with-iconv --enable-exif --enable-filepro --enable-ftp --with-gettext --enable-mbstring
--with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx
--with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl=/usr
--enable-dbx --enable-soap --enable-zip --with-mime-magic=$(MAGIC_MIME)
--with-exec-dir=/usr/lib/php5/libexec
0321nobodyさん2007/10/04(木) 17:37:46ID:???
>>315
いいんじゃない?
passはmd5でもしとけ
0322nobodyさん2007/10/04(木) 19:17:47ID:???
>>306
ますます何をしたいのかわからない。
そのソースは転載用に改造したものと思うけど処理の真意が伝わらない。
(>>319氏も書いてるが$tekunoも$poshも$saza*も変数名から推測できないし)
貴方の文章力だと処理をどうこうしたいじゃ理解できないから、こうしたいという具体的な目的とうまく動作しないソースを改変せずそのまま貼った方がいい。
言葉で表せないって事は当然プログラムに落とせないよ。

置換タグとはテンプレートを読み込んで置換したいのか?
「ああ」「いい」「うう」を併記しておいてその内1つだけを出力したいの?
if文かswitch文の分岐出力とも思えたりするのだが。
0323nobodyさん2007/10/04(木) 19:30:58ID:???
>>306
ようするにデータをXMLファイルで持っておいて、
任意のカラムのデータを取り出したい、ってことの気が…
それ、全然独自じゃないよ。
あと、あくまで独自のが作りたいんなら「自分で処理しやすい形式」にしましょう。
03243232007/10/04(木) 19:36:01ID:???
>>306
> 実際
> $saza = 1;
> <?php if ($saza){echo 'ああああ';} ?>
> <?php if ($saza1){echo 'いいいい';} ?>
> <?php if ($saza2){echo 'うううう';} ?>
> echo >>いいいい
> で今は動作していますが、ページ内で記述が
> ごちゃごちゃになるので

ちなみにこれ、普通は
$data = array(
  'ああああ',
  'いいいい',
  'うううう',
);
echo $data[$saza];
みたいに処理します。
0325nobodyさん2007/10/04(木) 19:37:16ID:???
>>321
ありがとうございました 一度そのやり方でやってみます。

>>316-318
済みませんでした、以後気をつけます
0326nobodyさん2007/10/04(木) 19:41:20ID:???
>>298>>306はきっとノーベル賞を狙ってるんだな・・そうとしか思えないカキコ内容
凡人の俺には理解不能だし・・
0327nobodyさん2007/10/04(木) 19:52:47ID:???
>>324
論理演算の結果(true/false)を$saza*に入れてるから配列はダメじゃね?
and、or、!=、の3つなら最低2つの変数は同じ値だし。
$saza = 1とか書いてるから難解になるんだよ。なぜ$saza = trueにしない

03283242007/10/04(木) 20:09:01ID:???
>>327
データを配列化した上で、$sazaとかの変数も処理しやすいよう
正規化してやるのが常道だと思いますよ。
>>306は文系脳な人なのかもしれないけど、データ構造・形式を疎かにして
アルゴリズムだけで何とかしようとするのはプログラムとは言えません。
03292982007/10/04(木) 21:58:38ID:r3u5qyzl
ttp://q.hatena.ne.jp/mobile/1190542039
この質問の、<h2>に条件を付けて表示できないかのような事
です。
条件1なら表示
条件2なら非表示という事です。

ただし、表示時に<h2>を残さないようにしたいのです。


下らない質問というより、わからない質問に真面目に答えてく
ださってる方、
どうもありがとうございます。


0330nobodyさん2007/10/04(木) 22:42:23ID:???
>>329
全然元の質問と違うーーー!!www
0331nobodyさん2007/10/04(木) 23:04:32ID:???
>>329
これはヒドイなぁ
自分で理解できてないものを情報小出しにして他人に聞くのはマズくねえか?
0332nobodyさん2007/10/04(木) 23:15:47ID:???
>>319 がまじめにレスしてるのに
無視するのはよくないぞ

↓じゃだめなのか?駄目ならその理由を第三者にわかるようかつ簡潔に述べよ。
<?php
$japanese = true;
$english = false;
?>
<html>
<body>
<?php if ($japanese) { ?>これはペンです。<?php } ?>
<?php if ($english) { ?>This is a pen. <?php } ?>
</body>
</html>

0333nobodyさん2007/10/04(木) 23:18:45ID:???
>>332
HTMLのど真ん中で条件判断させたくないって話だと思われ
0334nobodyさん2007/10/04(木) 23:28:57ID:3TfT8CvK
質問です。
会員システムで、ID(idhoge) と PASS(passhoge) に基づいて各ユーザの情報を管理してる場合でも
ブラウザ上では
profile.php?uid=10001 profile.php?uid=10002 
といった風に連番のパラメータを渡して各ユーザの情報を表示する場合があると思います。
もしこれが、ユーザ登録時のインクリメントの固有値を使ってるのだとしたら、
こういうのって、直接 profile.php?uid=idhoge としない場合にくらべてどんなメリットがあるのでしょう?
概念的というか、漠然とした質問かもしれないですがよろしくお願いします
03352982007/10/04(木) 23:30:24ID:r3u5qyzl
今、本を買ってきたので、もう一度自分で考え直してみます。
失礼しました。
0336nobodyさん2007/10/04(木) 23:30:53ID:???
>>329
えーと・・・・つまり、

はてなで紹介されてた手法を使うとHTMLの中にPHPコードを埋め込まなくても
自由に表示を制御できるらしいぞ!ってことは俺の;プログラムもPHPコードを
全部消してちょーシンプルにできるんじゃね?きゃっほー魔法みたいだー!
でも読んでもやり方さっぱりわからねー。ereg_replaceとかどこに書くんだ。
わっかんねーからくだ質で聞いてみるべ!

…と、こんな感じの話なんでしょうか?
とりあえず君はSmartyを覚えた方が幸せになれる気がするけど。
0337nobodyさん2007/10/04(木) 23:32:29ID:???
結局 >>298 が何を考えてたかを
エスパーできる奴はいなかったとさ
0338nobodyさん2007/10/04(木) 23:34:55ID:???
>>334
ユーザからの要望に応じて後から自由にIDを変更できる。
(特に複数テーブル間でIDを識別子に使ってる場合に重要)
IDに使用可能な文字や桁数を自由にできて融通が利く。
識別子は数字列にしといた方がDB上での検索が速くなる。
0339nobodyさん2007/10/04(木) 23:42:50ID:???
>>338
すごく納得できました
ありがとうございました
0340nobodyさん2007/10/05(金) 00:28:12ID:???
>>329
319だけどエスパーになりたいので再チャレンジするおw

<?php
$saza = 1;

$output = <<< HTML
<saza>ああああ</saza>
<saza1>いいいい</saza1>
<saza2>うううう</saza2>
HTML;

$saza_flag = array(0, 0, 0);

$saza_flag[$saza] = 1;

$pattern_array = array();

if ($saza_flag[0] == 0) $pattern_array[] = '(<saza>.*<\/saza>)';
if ($saza_flag[1] == 0) $pattern_array[] = '(<saza1>.*<\/saza1>)';
if ($saza_flag[2] == 0) $pattern_array[] = '(<saza2>.*<\/saza2>)';

$pattern = implode("|", $pattern_array);

$output = preg_replace("/{$pattern}/", "", $output);

echo $output;
?>
0341nobodyさん2007/10/05(金) 02:05:39ID:???
interface iAAA{}
interface iBBB{}
interface iCCC extends iAAA, iBBB{}

abstract class DDD implements iCCC{}
class EEE extends DDD{}


class DDDに インターフェイス iCCCを実装しているんですが、なぜabstractが必要なんですか?
abstract無しだとダメなんでしょうか?

また、class EEEには、abstractは必要ないんですか?
0342nobodyさん2007/10/05(金) 02:08:55ID:???
>>329
はてなのは絶対に削除で、>>329は条件付き削除(表示)、なら
preg_replaceを条件で分岐させればいいだけじゃないの?
(ソースはコピペなので未検証)

$html = <<< ENDHTML
<h1>hoge</h1>
<h2>hogehoge</h2>
<p>hogehogehoge</p>
<h2>hogehogehoge</h2>
<img src="hoge.src">
ENDHTML;

$mode = true;
if($mode) echo $html;
else echo preg_replace('!<h2>.*?</h2>\n*!i', '', $html) ;

2分岐なら$modeに真偽値で代入して上の処理、
多岐分岐なら==で比較しながら「if〜elseif〜」かswitch文
条件1ならh1表示、条件2ならh2表示、だと置換パターンも変える。

HTML側に変則的な文字列入れといて適当な文字列に置換って手もあるけどreplaceが2回必要になる。
0343nobodyさん2007/10/05(金) 02:16:51ID:zHZGL2zy
クラスってひとつごとに一つのphpファイルに格納していった方がいいと思う?
0344nobodyさん2007/10/05(金) 02:52:19ID:???
>>341
これphp?
複数のimplementsはできても複数のextendsはできんかったと思うけど

EEEと同じようなクラスが他にもいくつかあると思うけど
それらで共通の処理が必要なものをabstractに書いてたりすんじゃないかな

>>343
俺はhogehogeというクラスのファイルは
hogehoge.class.phpでクラス毎に1個1個作ってる
0345nobodyさん2007/10/05(金) 02:56:27ID:???
>>342
それ、2分岐くらいまでなら問題ないけど、質問主の要望みたいに
3、4分岐と増えるに従ってかなり面倒になるよ。
「1つだけ消す」のなら単純にelse条件を1つ増やすだけだけど、
「複数あるうち1つだけ残す(=3個とか4個とか消さないといけない)」なので。

で、そんなのいちいち条件判定しないで、正規表現に任すのがいいんじゃない?

$html = <<< ENDHTML
<sage1>hoge</sage1>
<sage2>hoge</sage2>
<sage3>hoge</sage3>
<sage4>hoge</sage4>
ENDHTML;

$sage = 2;
echo preg_replace("!<sage[^$sage]>.*?</sage[^$sage]>!", '', $html);
0346nobodyさん2007/10/05(金) 02:58:14ID:???
>>343
基本的には。

1つのファイルに複数クラスを入れるのはその両クラスがよっぽど関連が強くて
ほぼ確実にワンセットで使うだろう場合くらい。
03473452007/10/05(金) 03:07:52ID:???
おっと、>>329の要望だと<sage*>はユーザタグだからこれも消さなきゃいかんのか。
$html = <<< ENDHTML
<sage1>hoge1</sage1>
<sage2>hoge2</sage2>
<sage3>hoge3</sage3>
<sage4>hoge4</sage4>
ENDHTML;

$sage = 2;
echo preg_replace("!<sage[^$sage]>.*?</sage[^$sage]>|<sage$sage>|</sage$sage>!", '', $html);

ってとこかね。
これで
hoge2
だけ表示される。

あと$tekunoだかなんだかの話は、上記で$sage=2;にしてるとこを
if($tekuno and $posh) $sage = 1;
if($tekuno or $posh) $sage = 2;
if($tekuno != $posh) $sage = 3;
とすりゃいいんでしょ?
0348nobodyさん2007/10/05(金) 05:10:20ID:utkOd4pp
そろそろPHP熱が冷めてきて新しいこと始めたい今日この頃
Web技術のワンステップアップとしてPHPの次に.NETかServlet,JSPに触れたいと思ってます
Javaを理解している人間にとってPHPやC#はわかりやすいと聞くけど
逆にPHPからJava,C#を習得するのって困難ですか?
オブジェクトPHPを理解してる人にはある程度敷居が低いんでしょうが
自分はOOPは初歩程度の知識しかありません
みなさんはPHPからのステップアップとしてどういった技術を身に付けましたか?または身に付けようと思ってますか?
0349nobodyさん2007/10/05(金) 05:54:11ID:???
>>348
どれもコピペで実装しそうな雰囲気だな
全て中途半端で終わりそうw
0350nobodyさん2007/10/05(金) 06:34:13ID:???
>>348
とりあえずはPHP5でOOPを勉強してみりゃいーんじゃね?
0351nobodyさん2007/10/05(金) 06:50:35ID:???
PHPでOOPとか正気か?
0352nobodyさん2007/10/05(金) 06:58:58ID:???
Rubyでもやれってのか?
Smalltalk以外のOOP言語なんてどれも50歩100歩だよ。
形だけ学ぶならPHPで十分、十分。
0353nobodyさん2007/10/05(金) 07:49:36ID:???
OOPって概念がいろいろあるよね。
この辺のブログが役に立つと思う。

ttp://d.hatena.ne.jp/sumim/20040525/p1
ttp://d.hatena.ne.jp/JavaBlack/20070825/p1
0354nobodyさん2007/10/05(金) 08:03:17ID:???
>>352
正気でいってるなら恐ろしい
0355nobodyさん2007/10/05(金) 08:15:08ID:???
>>348のWeb技術ステップアップってのがどうもよくわからん。
Java,C#を学ぶのは他言語での記述力をつけるってことでいいかと。
OOP? OOPとWeb技術とどう結びつくのか不明。
0356nobodyさん2007/10/05(金) 08:17:05ID:???
いや、ステップアップのためにOOPを勉強したいわけじゃなくて、
ステップアップするならJavaかC#?でもOOP分からんから怖くて触れない
って言いたいんだろ。
0357nobodyさん2007/10/05(金) 08:17:15ID:???
>>354
正気じゃなくても恐ろしい
0358nobodyさん2007/10/05(金) 08:37:29ID:???
型無し言語から学び始めた人なら早目に型有り言語にシフトするのがいいかも
・宣言していない変数使おうとして怒られる
・異なる型どうしをキャストせずに代入しようとして怒られる
こんな些細なことで躓く子がたまにいるんだよね
0359nobodyさん2007/10/05(金) 09:03:26ID:???
まったく質問と違う流れになっててワロタ
0360nobodyさん2007/10/05(金) 09:21:33ID:???
型有無は結構おおきいね
Cをメインにやってたとき、型無し言語をしってびっくりしたぞ
0361nobodyさん2007/10/05(金) 09:35:51ID:OqMmbiqQ
高級言語で型を必要としてる時点で高級言語でないよね
0362nobodyさん2007/10/05(金) 09:37:56ID:???
変換する時にエラーを吐く理由がわかっているなら変換してくれよ!と思うw
0363nobodyさん2007/10/05(金) 10:03:51ID:???
CメインでもBASICの存在くらい知識に入れとけよ
03643602007/10/05(金) 10:24:41ID:???
型強制言語のメリットは
コンパイル段階でエラーつぶせる事だよね
error_reporting(E_ALL);
って必ず書くやつは、型強制言語出身の可能性大だと思うわ
0365nobodyさん2007/10/05(金) 10:29:15ID:???
PHPしかやったことない身からしたら
型付けってなんの意味があるの?って思っちゃうんだが
メモリを効率につかうためとかいう理由?
03663602007/10/05(金) 10:41:36ID:???
>>365
それもあるが、効率考えなくていいとこもあるから、
それはケース倍ケースだな
型強制言語から始めたものとしては、
宣言していない変数使おうとしてもそれなりに動いてしまう
のは脱力ポイントだな。
$hoge = 1
:いろいろ書いてて
echo $hogo; 変数名typo
とかやっても実行できてしまう。
Notice出すようにすればいいけど、実行しないと出ないでしょ。
型付けありだと、実行させなくてもコンパイル段階で
エラーでるからな。単純ミスは減らせる。
その分、ソースの記述は多くなるがな。

■ このスレッドは過去ログ倉庫に格納されています