09/03/26 19:08:12
>>651
こういうこと?
URLリンク(phpspot.org)
656:nobodyさん
09/03/26 19:31:31
クソサイトの宣伝すんなや
web cron
657:nobodyさん
09/03/26 20:06:05
すぐ吠えるDQNって・・・どこまで底辺なんだよ
658:nobodyさん
09/03/26 20:59:43 JIscrcVE
ありがとう、普通にcronすればよかった、トンクス
659:nobodyさん
09/03/26 21:05:33
>>649
STDINを使えという話ではなくて?
URLリンク(jp.php.net)
660:nobodyさん
09/03/26 21:23:14 ih4lRG32
PHPのソースを読んでコメントを抽出する正規表現を書きたいのですが
どうにもうまくヒットさせることができません
/** */ */
の時に長い方がマッチされてしまいます
どう書けばいいですか?
661:nobodyさん
09/03/26 21:32:53
"!/\*(.*?)\*/!s"
662:nobodyさん
09/03/26 21:48:28
>>661
できました!ありがとうございました。
*?で最短にマッチさせられるんですね
663:nobodyさん
09/03/26 23:16:05 46RAjvuH
fgetcsv関数って基本的にwhileとセットで使うの?
664:nobodyさん
09/03/26 23:23:56
retunr値が配列なだけだろ
665:nobodyさん
09/03/27 07:08:11 viybN2w6
symfonyにあるような、
ディレクトリを再帰的にさらってクラスをリストアップする機能が欲しいのですが
どうしたらいいですか?
PEARのPHP Parserを使ってみたのですが
エラーが出まくって使い物になりませんでした
666:nobodyさん
09/03/27 08:05:52
>>665
既に検討したとは思うが、クラス名を取得する程度なら、Tokenizerで処理しても、
大した手間でもなんじゃないの。
URLリンク(jp.php.net)
667:nobodyさん
09/03/27 09:19:56 DtOzsPN+
rename関数でフィアルを移動するプログラムを書いています
移動先に同名のファイルがある場合に上書きさせたいのですが
一度unlinkしてからrenameしないと駄目なのでしょうか?
668:nobodyさん
09/03/27 09:23:54
うん
669:nobodyさん
09/03/27 15:04:57
>>666
こんな便利そうなものがあったとは!
まさに欲しかったものです
ありがとうございました
670:nobodyさん
09/03/27 15:35:49 LbT/oMC/
ただ今MVCにてアプリケーションを作成していて
モデル部分にデータベース関係の処理(selectやdelete)を全てまとめてますが
フォームの項目チェックなどのバリデーション関係は
モデルではなくコントローラーに記述するべきですかね?
671:nobodyさん
09/03/28 00:29:13
>670
MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。
672:nobodyさん
09/03/28 00:34:00
バリデーションがC??
673:nobodyさん
09/03/28 02:42:46
画面やテーブルごとにチェックする項目が異なるのに
バリデーションがCはありえない
674:nobodyさん
09/03/28 06:25:24 xuBHT5om
newしたオブジェクトを変数に代入せずにメソッドを呼びたいのですが
そういう書き方ありますか?
{new Hoge()}->method()
みたいなイメージです
675:nobodyさん
09/03/28 06:46:27
>>674
URLリンク(74street.ddo.jp)
これかな?
ちなみに、インスタンス化せずメソッドを使う場合、宣言時にメソッドに「static」を付け、「クラス名::メソッド名」で呼び出す。。
class SampleClass {
public static function func($a,$b){
return $a + $b;
}
}
$ans = SampleClass::func(1,2);
676:nobodyさん
09/03/28 08:45:03
>>674
それは不可能
677:nobodyさん
09/03/28 08:49:24
>>676
お前、馬鹿だろ
前のレスで完結してるのにわざわざくだらん横槍を入れる必要はない
678:nobodyさん
09/03/28 08:56:18
静的メソッドしか呼び出せないじゃん
679:nobodyさん
09/03/28 08:58:31
>>676じゃないが、>>675 は別モンだと思うけどな。
>>674は何でそんなことしたいんかナゾだけど。目的も書くべきだろ。
ただの興味ということなら、それはそれで良いけど。
680:nobodyさん
09/03/28 11:44:19
というか何の意味があるんだろう
681:nobodyさん
09/03/28 12:52:45 0oeFWAvW
マニュアルを見てもいまいちわからないのですが
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
echo $b;
期待する結果は48ですが実際は44になります。($bには2行目の結果が入ったままってことでしょう)
2行目を$b = &$a * 2;のようにすると24になります。(*2は無視?)
期待する結果を表示するにはどのように記述すればいいのでしょうか。
PHP5.2.6
682:nobodyさん
09/03/28 14:13:07
>>681
言いたい事は理解できた
$b は常に $aに入れた値を2倍にする変数にしたいという事だな
2行目の $b = $a * 2 は $bに$aの値を2倍した値を入れるという命令だ
だから2行目では$bで$a(2)*2で4が入って3行目で4が出力、
4行目で$aに4を代入しているが5行目では$bは変化無しの4が表示されるから44となる
そして $b =& $a * 2 は変数の参照という事になって $b に入れた値は $a にも反映されるという事だ
2行目で変数&bは$aを参照しているとしているから3行目で2が表示されて
4行目で$aに4を入れているが$aと$bは参照の関係にあるから$bは4となり24となる
変数でそんな事が出来るか記憶を辿ってみたが…出てこない
件を解決する簡単な方法は関数を作ることだと思うんだが?
683:nobodyさん
09/03/28 14:21:32
>>681
掛け算の結果にまで参照変数を反映させるのは無理。もう一回掛け算するしかない
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
$b = $a * 2;
echo $b;
684:nobodyさん
09/03/28 14:30:41 jCCBzDpK
pChartを使ってレーダーチャートを描いています。
デフォルトでは縦軸にラベル(目盛?10、20、30...など)が表示されるのですが、
これを表示しないようにするにはどうすればよいのでしょうか?
公式のドキュメントを読んだのですが、わかりませんでした。
どなたか分かる方がいましたら、よろしくお願いします。
685:681
09/03/28 15:12:28 0oeFWAvW
>>682-683
ありがとうございます。
変数のみでは求めることは無理なんですね。関数で処理することにします。
686:nobodyさん
09/03/28 15:25:27
多分681がイメージしているような、「$aを2倍して返す処理」自体を$bに変数として格納するような仕組みはクロージャという。
関数をその場で組み立てるイメージだな。普通に関数を使う場合と違い、「2」の部分を$bの生成時に動的に組み込める。
JavaScriptやRubyでは可能、JavaやPHPでは不可能。PHPでは次のバージョンには盛り込まれる見込み。
これもまあ、関数を作っているわけだけど。
クラスを使ったりグローバル変数を使ったりしていいなら、今のPHPでも同じ処理は一応可能。
687:nobodyさん
09/03/28 16:48:33 y1nm6eda
POSTされた各フォーム毎の項目チェックをする時に、
$_POSTを直接チェックするのは何か問題がありますか?
例
if(!isset($_POST["name"])){
echo "未記入です";
}
それか全て一旦POSTを変数に代入してチェックした方がいいですかね?
688:nobodyさん
09/03/28 17:15:52
まったく問題ない
689:687
09/03/28 17:25:52
>>688
返信ありがとうございます。
なんとなく自信がなく聞いてみたんですが安心しました。
ありがとうございました。
690:nobodyさん
09/03/28 19:01:42
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【ショタ】3次専ショタスレ 12【女装・美少年】 [Download]
このスレに変態がいる!!
691:nobodyさん
09/03/28 19:31:18
phpの関数名でググった時
公式のドキュメントじゃなくて
phpspotのアフィドキュメントが上位に来るのがむかつくんだけど
どうしたらいい?
googleで除外urlを指定できたらいいんだけど
692:nobodyさん
09/03/28 19:36:20
>>691
>>1
693:nobodyさん
09/03/28 22:31:41
>>690
呼んだ?
694:nobodyさん
09/03/28 22:48:03
URLリンク(journal.mycom.co.jp)
695:nobodyさん
09/03/28 22:52:21
GOTO文wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
696:nobodyさん
09/03/28 23:16:06
GOTOを否定する奴は例外も使うなよ
697:nobodyさん
09/03/28 23:27:52
gotoよりはfinallyが欲しかったねぇ。
なんか都合があるんか知らんが。
698:nobodyさん
09/03/29 05:04:23
gotoってどういうときにつかうの?
699:nobodyさん
09/03/29 06:25:15
帰ってきてほしくない時
700:nobodyさん
09/03/29 09:35:20
人生をやり直したいとき
701:nobodyさん
09/03/29 13:21:29 EDw1f4T+
define("TEST",realpath("."));
という定数があったとして、TESTの中身が「/home/test/public_html」だとします。
通常は、定数指定して
include_once(TEST.'/test.php');
としてディレクトリ指定代わりに出来ますが、
定数の中身で表示する事って出来ませんでしょうか?上の例で言うと
include_once('/home/test/public_html」'.'/test.php');
と言うように書き出せればと思っています。
702:nobodyさん
09/03/29 13:28:04
表示ってどこに?ソースコード中に?
703:701
09/03/29 13:29:17
>>702
fopenでファイル作成する時に、その出力側のファイル上に
include_once('/home/test/public_html'.'/test.php');
という形で記述されて欲しいのです。
704:nobodyさん
09/03/29 13:31:15
意味が分からない
fopenでtest.phpを作成するってこと?
705:nobodyさん
09/03/29 19:34:50
fopenはファイル開くだけだろ。PHPとしては動かないよ
PHPスクリプトをファイルとして開く理由がわからんが
706:nobodyさん
09/03/29 20:07:08 g6t/L+Oe
URLリンク(atelier-ps3.jp)
このサイトいくらぐらい掛かってると思いますか?
707:nobodyさん
09/03/29 20:07:18 A+4tAAtu
配列で存在しないキーにアクセスするとnoticeが出るはずですが、
以下のようにすると出ません。
これは何故ですか?
error_reporting(E_ALL | E_STRICT);
class Hoge {
protected $_value = array();
public function & getEntity($key){
return $_value[$key];
}
}
$hoge = new Hoge();
var_dump($hoge->getEntity('no_key'));
708:nobodyさん
09/03/29 20:08:51
return $this->_value[$key];
でした
結果は同じですが
709:nobodyさん
09/03/29 20:18:24
参照だから。
710:nobodyさん
09/03/29 20:20:00
リファレンス返してるからだろ
711:nobodyさん
09/03/29 20:23:38
リファレンスだと何故noticeが出ないのですか?
712:nobodyさん
09/03/29 20:34:22
リファレンスって何か知らんで使ってんの?
713:nobodyさん
09/03/29 21:07:35
>>711
参照を張るとzvalが増えて変数を定義したのと同じことになるからな。
計算機の基礎だと思うが。
714:nobodyさん
09/03/29 22:45:02
>>696
強盗みたいだから否定してるのであって例外は問題ない、というのが今の反GOTO派の主流
715:nobodyさん
09/03/29 23:05:06 lmZMeLkn
【OS名】CentOS 5.1
【PHPのバージョン】php5.16
【連携ソフトウェア】mysql
【質問内容】
print'<tr>';
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
}
MySQL から 特定のフィールドを取得し,HTML のテーブルに5列ずつ表示しようとしております。
5列毎にprint'</tr>';を挿入して
テーブルの行数をかえたいのですが,どのようにすればよろしいでしょうか?
【求める結果】MySQL テーブルのの行数が8行の場合
<tr>
<td>NAME1</td>
<td>NAME2</td>
<td>NAME3</td>
<td>NAME4</td>
<td>NAME5</td>
</tr><td>
<td>NAME6</td>
<td>NAME7</td>
<td>NAME8</td>
</tr>
お手数ですがよろしくお願いします。
716:nobodyさん
09/03/29 23:19:48
pager?
717:nobodyさん
09/03/29 23:21:58
>>713
なるほど、参照を張ると変数定義と同じになるんですね。
718:nobodyさん
09/03/29 23:22:53
雑だけど。
$i = 1;
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
719:nobodyさん
09/03/29 23:28:38
>715
HTMLマークアップが不正な件。
8個の場合、2行目3列目までで終わるが、余った2セルはどう埋めるんだ?
>718
<tr>がない。
720:715
09/03/29 23:39:03 lmZMeLkn
ご回答ありがとうございます。
>>718 を参考にして,
$i = 1;
while ($row = mysql_fetch_object($res )){
if($i == 1){
print'<tr>';
}
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
としてみました。
>>719 の件については,とりあえず暫定的に MySQL 内の行数を5の倍数にしておきます。
皆様ありがとうございました。
721:nobodyさん
09/03/30 05:37:45 Sq1DK82P
DBなどすべてUTF-8で構築しております。
そのうえで、xmlWriter()をつかって「EUC-JP」で
XMLを書き出したいのですがどうしたらよいのでしょうか?
単にstartDocumentでEUC-JPを指定するだけでエンコードを変更できるのでしょうか?
Firefoxでは表示され、safariだとエラーになってしまいます。
$writer = new xmlWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'EUC-JP');
$writer->startElement('root');
(略)
$writer->endElement();
$writer->endDocument();
return simplexml_load_string($writer->outputMemory(TRUE));
ちなみに各Directiveの値もメモしておきます。
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding UTF-8
mbstring.script_encoding no value
※もうひとつのスレッドでは答えがわからずじまいで、
どうしたらよいかヒントだけでもつかめたらと思います。
どうぞお願いいたします。
722:nobodyさん
09/03/30 08:22:50
マルチ乙
723:nobodyさん
09/03/30 12:12:19 ObvykTsh
初心者ですが質問させて下さい。
URLリンク(www.gen-x-design.com)
このサイトのthumbnail.inc.phpを使って画像をリサイズしてサムネイルを生成したのですが
いまいち仕組みがわからずにいます。
リサイズされた画像はどこかに保存されているんでしょうか?
724:nobodyさん
09/03/30 12:16:26
スクリプトの仕組み解らなくてもOSのファイル検索くらいは使えるだろ
725:nobodyさん
09/03/30 12:28:05 ObvykTsh
OSのファイル検索?
実際にサイトにアップして表示させてみました。
そしたらリサイズされた画像が表示されたんですが
サイトのどこをみても画像が増えた形跡がありません。
リサイズした画像を別に保存するわけではないのですか?
726:nobodyさん
09/03/30 12:41:43
いやだからファイル探したいならファイル検索すればいいじゃん
727:nobodyさん
09/03/30 12:49:44 ObvykTsh
検索したくても、どんな形式でどんなファイル名で保存されてるかわからないので
画像のアドレスをみても
show_image.php?filename=sample.jpg&width=250&height=250
と書いてあるだけなんです
728:nobodyさん
09/03/30 13:07:26
別に保存されてないんじゃねーの?
729:nobodyさん
09/03/30 13:09:40
これしてねーんだろ
$thumb->save('path/to/file.jpg',80);
730:nobodyさん
09/03/30 13:13:48 ObvykTsh
あ、それしてないですね
それをしないとただ大きい画像を縮小してるだけで意味ないんでしょうか?
731:nobodyさん
09/03/30 13:26:05
サムネで表示しただけで保存されるほうがうっとうしいわ
732:nobodyさん
09/03/30 13:53:38
っということは、大きい画像を元に
サイズも容量も小さくして表示ができるってことでいいのでしょうか。
サムネイル画像の保存をせずに
733:nobodyさん
09/03/30 14:28:36 Nai97eUH
頭がこんがらがってしまったので質問させて下さい。
データベースを用いてアプリケーションを作る際
例えば該当するIDを選んでupdate、deleteする時に、
該当するIDがある時は正しく削除され、削除されました。
とメッセージを返すんですが何らかの形で該当しないIDが
投げ込まれた時は一般的にはどのような処理をされていますか?
まず該当するIDがあるかselectで調べて、ある場合はupdateもしくは
deleteで処理みたいな形ですかね?
アドバイスよろしくお願いします。
734:nobodyさん
09/03/30 14:50:52
それでいいよ
735:nobodyさん
09/03/30 15:01:56
>>733
URLリンク(jp.php.net)
とか類似関数で。
736:733
09/03/30 15:12:04
>>734-735
返信ありがとうございます。
これまでなんとなくしか理解できてなかったのですが
今スッキリしました。
本当にありがとうございました。
737:nobodyさん
09/03/30 18:45:52 Gjy/ZAJ6
【OS名】Ubuntu 8.10
【PHPのバージョン】5.2.6-2ubuntu4.1
【連携ソフトウェア】Apache/2.2.9
【質問内容】
PHPをさわり初めて一日目の初心者です。
header ( "HTTP/1.0 404 Not Found" , true , 404 );で、.htaccessで指定した404エラーページを
表示させたいのですが、ブランクページになって表示されません。
確かに404エラーページはファイル自体が存在していない場合のみ表示されますので、Location:で
存在しないファイルにリダイレクトさせて見たところ、見事404エラーページが表示されました。
しかし、この方法はアドレスが変更されてしまうので、できればそのPHPのアドレスで、404エラー
を表示させたいのですが、何か方法はございませんでしょうか。
よろしくお願いします。
738:nobodyさん
09/03/30 23:26:09
>>737
readfileでエラーページの内容をそのまま流しちゃダメなの?
URLリンク(jp.php.net)
739:nobodyさん
09/03/31 06:15:24
クラスについて質問です。
URLリンク(www.m-fr.net)
このサイトで、
>で、こうします。
>
>obj = new 三角クラス;
>適当な変数 = obj->get_1辺の長さ(); // データの取得
>obj->set_1辺の長さ(適当な値); // データの設定
とあるのですが、下の二行は順序が逆の方がよいのでは?と思いました。
setしてからそのsetした結果得られる値をgetする、みたいに。
その方がしっくりくるというか・・
もしかしたら、何か理由(もしくは自分の勘違い)があって、
getをまず書いておいて、そのsetする一行を書く、という形式にしてるのか
よくわからないので、教えていただけないでしょうか
よろしくお願いします。
740:nobodyさん
09/03/31 08:44:30
2行目で得た値を3行目で使っているわけではないと思うぞ?
getとsetの別々の事例かと
あとスレタイ
741:nobodyさん
09/03/31 10:26:43 MdY2FCLh
WindowsXP上で開発を行っているのですが、
Windowsの絶対パスでrequireで読み込むとエラーになります。
require_once("C:\htdocs\test.php");
↓
failed to open stream: Invalid argument
どうしたら読み込めるようになるのでしょうか?
742:nobodyさん
09/03/31 10:35:59
echo "C:\htdocs\test.php"; やってみそ
743:nobodyさん
09/03/31 10:53:51
>>683
今コード用意しますのでちょっと待っててくださいね
744:nobodyさん
09/03/31 11:14:25
アンカ間違えましたね^^;
>>681さんおすきなほうどうぞ
その1
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";}
$a = 2;
$b = 2;
cale($a,$b);
$a = 4;
cale($a,$b);
その2
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";
}
// $aと$bはそれぞれ別の値を持てる
$a = 2;
$b = 2;
$cale($a,$b);
// $aと$bは常に同じ値になる
$b = &$a;
$a = 100;
cale($a,$b);
$a = 5;
cale($a,$b);
745:nobodyさん
09/03/31 11:20:52
>>737
rewrite
746:nobodyさん
09/03/31 12:20:45
>>737
あなたのやろうとしてることはおすすめできない
747:nobodyさん
09/03/31 13:58:39
>>737
アパッチ「俺の仕事はもう終わってんだからバックパスすんな」
748:nobodyさん
09/03/31 15:08:08 H7khy467
+食べ物
++りんご
++バナナ
++ぶどう
↑の4行を↓のようにhtmlタグとして出力したいのですが
wikiみたいなことがやりたいのですがどなたかヒント頂けないでしょうか?
<ul>
<li>食べ物</li>
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</ul>
749:nobodyさん
09/03/31 15:12:34
wikiのソース見ればいいのでは?
750:nobodyさん
09/03/31 15:19:27
>>749
HTMLソース見てもしょうがないだろw
751:nobodyさん
09/03/31 15:27:10
>>749
そんなんで片付くならこのスレが82代まで行かないでしょw
答えてやればいいじゃんwww
752:nobodyさん
09/03/31 15:27:12 qal8dqXu
>>738,745
ありがとうございます。
>>746-747
本当はファイルが存在しているのに無理矢理サーバーにファイルが存在していないことにして、エラーページを表示させるところが
でしょうか。それとも、「header ( "HTTP/1.0 404 Not Found" , true , 404 );」がおすすめできないのでしょうか。
もし、そうであれば、「header("HTTP/1.0 301 Moved Permanently") ;header("Location: URLリンク(www.example.com)") ;」
などのリダイレクトであれば大丈夫ですか。
753:nobodyさん
09/03/31 15:27:13 WkuOnscP
【OS名】TurboLinux
【PHPのバージョン】4.3.11
【連携ソフトウェア】Apache2
【質問内容】
auto_prepend_fileで指定したファイルが動いてくれません。
.htaccessで、「php_value auto_prepend_file "ap.php"」と記述しました。
ap.phpの中身は「<? echo("test"); ?>」です。
これでURLリンク(hostname)を開くと、
画面上部に「test」と表示されることを期待しているのですが、
TurboLinux + PHP4.3.11のサーバーでは実際は何も表示されませんでした。
もうひとつUbuntu + PHP5.2.4のサーバーがあるのですが、
そちらに同様のコードを設置したところ、意図したとおりに動きました。
何か設定の問題だとは思うのですが、何が問題なのか分からずに困っています。
ひとまず以下のことを試しました。
・phpinfoを確認 ⇒ auto_prepend_fileのLocal Valueは「ap.php」になっている
・auto_prepend_fileの設定をわざと"ap2.php"にした ⇒ ファイルが読み込めないエラー
・ap.phpの中身をわざと文法エラーにした ⇒ 何のエラーも出ない(display_errorsはon)
・ap.php、index.phpの両方でWarningが出るようにした ⇒ index.phpのWarningのみが表示される
・ap.phpの一行目(<?~?>の外側)に「aaaaa」を追加 ⇒ 何も表示されない
どうもauto_prepend_fileでap.phpを読み込んではいるものの、
ap.phpのコードが実行されていないようです。
この現象について分かる人がいらっしゃいましたらご教示下さい。
754:nobodyさん
09/03/31 15:50:33
>>753
>ap.phpの中身は「<? echo("test"); ?>」です。
<?使えるなら<?=使えよ
ていうか<?phpって書く方を推奨
755:nobodyさん
09/03/31 15:53:09
>>753
よくわかんないけど全てのページのヘッダに挿入するならmod_layout
URLリンク(d.hatena.ne.jp)
756:nobodyさん
09/03/31 19:15:21
>>748
質問に対する答じゃないけど、HTMLは
<ul>
<li>食べ物
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</li>
</ul>
こう書いた方がいいと思う。
757:nobodyさん
09/03/31 20:09:26
>>748
URLリンク(d.hatena.ne.jp)
758:nobodyさん
09/03/31 22:31:20
>674
今日めっけた
URLリンク(d.hatena.ne.jp)
function ref($obj){ return $obj; }
ref(new Hoge)->doSomething();
良し悪しはともかく、発想は面白い。
759:nobodyさん
09/03/31 22:32:52
そこまでして1行にして何のいいことがあるんだろう
760:nobodyさん
09/03/31 23:09:23
余計な関数が増えることには何の抵抗もないのかw
761:nobodyさん
09/03/31 23:32:57
一時変数が(複数の場所で)増える事と関数が増える事のトレードオフなら、俺なら関数を増やす。
このためだけにgetInstance()とかfactory()とか定義したら、関数増やすよりタチ悪いしな。
ただ、一般的な書き方じゃないので、ref()の定義を探さないと読めない=コードの可読性が落ちるのが難点。
JavaScript界の$()みたいに、一般的なハックになったらアリかな。
762:nobodyさん
09/03/31 23:35:38
他言語でできるのにPHPでできないのがむかつくんだよな
763:nobodyさん
09/03/31 23:38:29
オブジェクトの基底クラスにstaticなnewが実装できたら
Hoge::new()->doSomething();
ってできるのにな
764:nobodyさん
09/04/01 00:05:10
singletonでいいじゃん
765:nobodyさん
09/04/01 01:36:40
一行にしたいって要求に対して、singleton提案するやつw
766:nobodyさん
09/04/01 01:37:54
>>761
いっしょに仕事したくないタイプだわ。なんだよrefって
767:nobodyさん
09/04/01 02:05:39
>>765
一行になるじゃん
768:nobodyさん
09/04/01 02:20:35
メソッドチェーンがやりたいだけだろ
769:nobodyさん
09/04/01 02:32:15
誰が?
770:nobodyさん
09/04/01 02:51:42
俺!
771:nobodyさん
09/04/01 03:16:29
singletonはウンコすぎ。singleton依存症は治る病気だから通院したほうがいいぞ
1行で書きたいって理由だけでstaticなクラスメソッドを増やすのは流石にナシだろ
だいたい1つや2つならともかく、そういう書き方がしたくなるようなJavaっぽい書き方をしてたら抽象データ型なんて死ぬほどできるわけで
そういうクラス全部にstaticメソッド定義すんのかって話になる。継承も使えないし
コンストラクタが引数を取るような場合さらに面倒くせえしな
まあ、そもそもJavaっぽい書き方なんかするなよ、って言うのが多分正解だけどな
$tmp = new Hoge(); $tmp->fuga();でいいだろ
使いもしない一時変数が増えるのがキモいって気持ちは分かるが
772:nobodyさん
09/04/01 07:15:56 zGetu19r
ファイルをダウンロードできるWebアプリがあって、IE8で保存するフォルダをゆっくり選択してると
サーバ側のPHP(5.2.6/Windows)がタイムアウトしちゃうんですが、そういうもんなんでしょうか。
タイムアウト伸ばすしかないのかなぁ。
ファイルが壊れるだけで、一見したところ気がつかないのが、またいやらしい。
773:nobodyさん
09/04/01 07:21:55
てか、singletonは全く別次元の話だろ
774:nobodyさん
09/04/01 07:26:35
>>771
ひとつひとつのクラスにstaticメソッドを実装するってことではなく
rubyみたいにすべてのオブジェクトの先祖になるクラスにstaticを実装するって意味。
今でもrunkit使えば可能なのか、どうか知れないが、
標準で出来たらいいなぁ
775:nobodyさん
09/04/01 08:25:46 wwrEQ3GF
WindowsXPで開発しているのですが、
echo realpath(".");
とすると、C:\Program Files\Apache Group\Apache2\htdocs
のように\が付きます。これを/に置換すれば良いだけでしょうが、
最初から\ではなく/にして、ディレクトリ名を取得する方法はないでしょうか?
776:nobodyさん
09/04/01 08:34:02
>>771
じゃsingletonじゃなくて普通にインスタンス返すメソッドでいいじゃん
777:nobodyさん
09/04/01 08:43:29
レンたるサーバーなのでMysqlのmax_connectionを増やせまえん。
たまにMysqlへの接続数が多すぎてエラーになります。
そこで、
if(){
通常通りMysqlへ接続}
{接続エラー時の対処}
こんな感じにしたいと思ってるんですが、いい関数ありますか?
778:nobodyさん
09/04/01 09:25:38
>>771でいいだろ。気持ち悪いコードやメソッド増やしたいやつ多すぎ
779:nobodyさん
09/04/01 09:28:10
>>777
die
780:nobodyさん
09/04/01 09:29:50
そもそも、newしてメソッドを一つだけ実行ってのは設計がダメだな。
staticで十分か、コンストラクタに仕事させすぎ。
781:nobodyさん
09/04/01 09:54:46
>>775
Windowsをunixベースにする
782:nobodyさん
09/04/01 11:02:36
>>775
nai
783:nobodyさん
09/04/01 11:04:49
>>777
こっちのほうおすすめ
function errorMysql() {
エラー処理
exit;
}
if (!接続) errorMysql
784:nobodyさん
09/04/01 11:49:45
例外使えよ
785:nobodyさん
09/04/01 17:33:12
最近書き込み減ったに
貴様らなにしてんのかね
786:nobodyさん
09/04/01 18:09:20
もう一つの某巨大掲示板に移動したんじゃね?
787:nobodyさん
09/04/01 18:21:05
>>786
それってどこよ?
788:nobodyさん
09/04/01 18:36:52
>>785
PHPの仕事を他の人に任せてコーディングの仕事するようになった
789:nobodyさん
09/04/01 21:00:24
>>787
おしえてグー
790:nobodyさん
09/04/01 23:06:31
>774
絶対言われると思った。俺もそれは考えたが、5.3.0より前のPHPでは無理。
親クラスで定義された静的メソッドで、子クラスのインスタンスは生成できない。つまり
class Parent{
static function getInstance(){
//do something
}
}
class Child extends Parent{}
とあった場合、Parent::getInstance()の実装がどんなだろうと、Child::getInstance()がChildのインスタンスを返すのは不可能。
Childというクラス名すら取得できない。
>780
{ new UrlString("スレリンク(php板)") }->domain();
コンストラクタによる依存性注入をしてる場合も、newしてすぐメソッドを呼ぶだけでじゅうぶんな事がある。
引数なしのコンストラクタならばたいていの場合不要ってのは同意。
791:nobodyさん
09/04/02 09:51:30 ij3728yl
URLリンク(pear.php.net)
これって日本語は対応してないの?
792:nobodyさん
09/04/02 10:31:00
ソース見りゃ分かんべ
793:nobodyさん
09/04/02 10:35:42 ij3728yl
>>792
いやいや、、、
まだそこまでレベルいってないですよ
だからあなたが代わりに見て判断してください
794:nobodyさん
09/04/02 10:44:44
じゃレベル上げろ
795:nobodyさん
09/04/02 10:56:23
長い文と難しい単語(音節のたくさんある)の割合で計算してるみたいだから、
原理的には日本語でも計算は可能だろうけど、日本語ではMecabとかないと大変だし、
多分計算式に定義されてる係数は日本語の場合を考慮していないので、
信頼出来る結果のためには自分で文献にあたるとか実地調査して決定する必要があるべ。
796:nobodyさん
09/04/02 11:12:51 CfxT7le3
【OS名】windows xp home edition
【PHPのバージョン】php5ぐらい
【連携ソフトウェア】mysql
【質問内容】
フォームのセレクト項目で悩んでいます。
form.phpを表示させるとき、セレクト項目を
mysqlから取り出して表示させているのですが
(idとその名前)
セレクト項目が4つもあるので、何か一気に取り出す方法が
あったりするのですか?それとも、一個一個4つのセレクト用に
select genre_id,genre_name from genre;
(genreはジャンル)
というふうにするしかないですか?
797:nobodyさん
09/04/02 11:30:18 4VqTVZ/0
mysqlの勉強をしてます
以下のようなデータをデータベースに登録してます
id,name,age
1,田中,20
2,木村,31
3,坂下,43
このデータをテーブルに書きだしたいのですが
pearなどのライブラリを使用しない場合、どのようなコードを書くのが効率いいでしょうか?
mysql以外のデータベースは使用しないのでmysqlに特化した書き方をどなたかご教示お願いいたします
798:796
09/04/02 11:40:45
>>797
$link = mysql_connect('localhost','ユーザ名','パスワード名');
mysql_select_db('データベース名');
$sql = "select * from テーブル名";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$data['id'];
$data['name'];
$data['age'];
}
じゃないの?
799:nobodyさん
09/04/02 11:48:45 e2MYzFKZ
すみません、僕もちょっと似たようなこと?で質問させてください
>>797さんのデータで
id,name,age
1,田中,20
2,木村,31
3,坂下,43
とありますが、たとえばID2の木村さんの行だけを取得する場合、
while ( $data = mysql_fetch_array ( $result ) ) {
if (2==$data['id']) {
$id = $data['id'];
$name = $data['name'];
$age = $data['age'];
break;
}
}
とやってきたのですが、MYSQLではピンポイントで取得することができないってことでしょうか?
800:796
09/04/02 11:59:21
>>799
嘘だよね? select * from テーブル名 where id=2;
あるいは、 where name='木村';
801:nobodyさん
09/04/02 12:07:31
>>796
mysql_fetch_arrayの結果を4回使いまわす
802:796
09/04/02 12:09:54
>>801
違うんです。4つそれぞれ別なんです。
テーブル結合でも想像できないのでやっぱり4回やらないとだめなのかな
803:nobodyさん
09/04/02 12:29:08
XAMPPをインストールしました。
MySQLにパスワードを設定しようとphpmyAdminでuser テーブルを表示させましたが
Hostが%のレコードがありません。localhost と127.0.0.1というのだけです。
パスワードを設定するのはlocalhost と127.0.0.1でいいのでしょうか?
804:796
09/04/02 12:40:16
$xxx[0] = "genre";
$xxx[1] = "property";
$xxx[2] = "actress";
$i=0;
$g=0;
while ( $i < count($xxx) ) {
$sql = "select $xxx[$i]_id,$xxx[$i]_name from $xxx[$i]";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$xxb[$g][$xxx[$i]]['id'] = $data[0];
$xxb[$g][$xxx[$i]]['name'] = $data[1];
$g++;
}
$i++;
}
これでいい?
805:nobodyさん
09/04/02 12:56:43
気持ちの悪いメンテナンスしづらいコードですね
806:796
09/04/02 12:58:10
>>805
これでいけました
>>796の質問者です。
一回のSQLで4つのテーブルのIDと名前をゲットできました
807:nobodyさん
09/04/02 13:01:43 vfSwYPOW
【OS名】centos
【PHPのバージョン】php5.26
smarty使用
【連携ソフトウェア】mysql
【質問内容】
初めての質問です。
よろしくお願いします。
登録フォームが都合上ページの下部にあるのですが
PHPで入力エラーを同じページの同じ登録フォームのある部分に表示しております。
ページ上部に登録フォームのアンカーへ移動するリンクはありますが
PHPではいたエラー文言付画面の表示時に下部のアンカーへ移動して表示するには
javascript以外に方法はないでしょうか?
要はURLリンク(www.etc.com)
みたいにやるにはどうすればいいのか、よろしくお願いいたします。
808:796
09/04/02 13:05:48
正確に書けば、$xxb[$xxx[$i]][$g]['id'] = $data[0];
かな
for($i=0;$i<count($xxb['genre']); $i++)
で各セレクト分でしよう
809:796
09/04/02 13:26:45
>>804
途中で$g=0;を入れるのを忘れました。
$i++の後
810:nobodyさん
09/04/02 13:51:13
796さん、あなたを下スレ公認回答者に認定いたします
811:nobodyさん
09/04/02 18:28:53
>>807
actionかlocationでの遷移先をそれに設定すればいいのでは?
812:nobodyさん
09/04/02 19:09:54 vfSwYPOW
>>811
ありがとうございます、できました!!
813:nobodyさん
09/04/02 21:54:38 SbciSXr8
すません
pukiwikiとかの既存ソースを使ってるのですが
PHPがサバの設定でポート指定されていて
既存ソースだと、リンク先がPHPの場合、ポート指定が外されてしまうのです
TOPページが :7070 で実行してたら
遷移先が :7070 が外れてしまうという状態です
解決方法とかご教授願えますか。
質問場所が悪ければ、聴ける場所なども教えていただけると助かります
814:nobodyさん
09/04/02 21:56:16
pukiwikiの設定でサイトURL入れるとこあるんじゃ?
815:nobodyさん
09/04/02 22:33:32 SbciSXr8
なるほど…
ちょっと探してみます。
ただ、pukiwikiに限らず、他のPHPでも
同じ状況になってしまうので根本解決するための方法など
ご存知でしたらお願いします。
816:nobodyさん
09/04/02 22:33:55
絶対リンクをやめる
817:nobodyさん
09/04/02 23:10:28
スクリプトの先頭でob_start()。
コールバック関数を指定して出力内容を全部受け取り、URLを全部置換する。
818:nobodyさん
09/04/02 23:15:28
絶対リンク埋め込みだとしてもhttp://で検索すればすぐ書き換えられそうじゃん
819:nobodyさん
09/04/03 01:14:27 QmVSt/Vd
【OS名】win xp sp3
【PHPのバージョン】php5.29
【連携ソフトウェア】mysql
【質問内容】
$val = NULL;
$query = "insert into test (id, comment) value ($val, 'test')";
上記のSQLをダンプしてみると
NULLを代入した変数$valがNULLとして展開されていません。
もぬけの殻となってしまっています。
※ダンプしたクエリ
insert into test (id, comment) value (, 'test')
なのでクエリーを投げるとエラーとなってしまいます。
NULLをinsertしたい場合は変数にいれず、
直接クエリの文に記述しないといけないのでしょうか?
820:nobodyさん
09/04/03 01:28:48
>819
現代人ならプリペアドステートメントを使え。プレースホルダ使える状況でクエリを直接組み立てる奴は原始人。
PDOStatement::bindValue()の第3引数にPDO::PARAM_NULLを指定すれば、NULLをDBに入力できる。
つうか、何もinsertしなければ、デフォルト値であるNULLが入るけどな。
(カラムにnullが許可されており、他のデフォルト値を指定していない場合に限る)
821:nobodyさん
09/04/03 01:33:38
DB上のnullじゃなくて言語上でnullだから無くて当たり前
822:nobodyさん
09/04/03 01:33:52
単にこうするんじゃないか?
$val = 'NULL';
823:nobodyさん
09/04/03 01:34:01
$val = 'NULL';
でNULLをDBに入力できる
824:819
09/04/03 01:37:29
>>820
>プリペアドステートメント
はじめて聞きました。
>何もinsertしなければ、デフォルト値であるNULLが入る
これは理解していたのですが、インサート項目が非常に多く、
そのほとんどが必須ではないので、クエリを組み立てるのがめんどくさく
値がわたってこようがこなかろうがすべての項目をインサートさせてしまう感じで作ってしまいました。
プリペアドステートメント勉強します。
ありがとうございました。
825:819
09/04/03 01:39:55
>>822
>>823
それだと文字列のNULLが入ってしまいました。
間違えてるかもしれないのでまた確認してみます。
ありがとうございます。
826:nobodyさん
09/04/03 01:44:23
されないだろ
insert into test (id, comment) value (NULL, 'test')
827:nobodyさん
09/04/03 02:04:33 7RHF46qi
申し込みフォームの作成について
form1.phpにて記述されたformの内容をPOSTで
form2.phpという確認画面で受け取るような
プログラムを作ってるんですが、
確認画面にて前に戻るボタンと送信ボタン2つを作りたい場合は
それぞれに同じ内容のhiddenを設定するしか方法はないんですかね?
もしスマートな方法がありましたらアドバイスよろしくお願いします。
828:nobodyさん
09/04/03 02:07:57
セッション使えば?
829:827
09/04/03 02:11:24
>>828
返信ありがとうございます。
やっぱりsessionがいいですよね。
もしPOSTでスマートに出来るならと思い聞いてみました。
830:nobodyさん
09/04/03 02:26:52
hiddenとか過去の産物だろ。更新ボタンとか戻るボタンとかでgdgdになるのが目に見えてる
831:nobodyさん
09/04/03 02:29:07
>>827
試してないけど、javascriptでformのactionを変更できるんじゃないの。
URLリンク(msdn.microsoft.com)
このへんは趣味の問題かもしれんが、セッションに値を保持するのは、
同じセッションで複数タブ開かれた場合に動作がおかしくなりやすいから、
あんまりお勧めはできん。
832:nobodyさん
09/04/03 02:30:00
>>830
戻るでグダグダになるのはセッションじゃないかい?
833:nobodyさん
09/04/03 02:38:12
とりあえずhiddenを批判するやつはどこにでもいる
834:nobodyさん
09/04/03 03:42:37
入力、確認を違うファイルにするとエラー処理がめんどい
835:nobodyさん
09/04/03 04:07:02
php5.3rc1使ってる人に質問です。
php.iniに書いたmb_string系の設定って反映されてますか?
あと何故かapcも動かない、、、
いくら設定を見直してもなにが悪いのかわかりません。
解決策をご存知の方いましたら、教えてください。
836:835
09/04/03 06:55:01
解決しましたすみません;ケアレスミスでした・・・
837:nobodyさん
09/04/03 07:27:17
>>783
ありがとうございます。それでいってみたいと思います。
838:nobodyさん
09/04/03 07:28:49 b3GlDVd8
クエリの時のプリペアドステートメントって、どういう効果があるんですか?
一応本では読んだんですがいまいちよくわかりません 簡単に説明お願いします
839:nobodyさん
09/04/03 08:01:16
>>838
繰り返し使われる場合はパフォーマンスが上がることもあるみたいだけど、一番大きいのは
SQLインジェクションみたいな攻撃を受けにくくなることじゃないの。
840:nobodyさん
09/04/03 08:43:25
そんなのクオートすりゃ済む話だろ
841:nobodyさん
09/04/03 08:45:48
>>819
もうプリペアでやってるかもしれないけど
$a = "";
$var = "'".$a."'";
$query = "insert into test (id, comment) value ($val, 'test')";
842:nobodyさん
09/04/03 10:01:31
NULLと空文字は違うだろw
843:nobodyさん
09/04/03 10:05:52
昔Oracleしか知らなくてnullとブランク何が違うか客先で質問して大恥かいたことあるぜ
844:nobodyさん
09/04/03 11:18:56
根拠レスな「このコードはセキュリティがダメだね」発言は居酒屋での「大したことねえなマツザカ(笑」みたいな会話に近い
URLリンク(neta.ywcafe.net)
845:nobodyさん
09/04/03 11:26:15
俺も思う
サンプルコードにこれ見よがしにつっこむ奴なんなの
ある側面から切り取ってるんだから瑕疵がないほうがおかしいだろ
846:nobodyさん
09/04/03 11:29:51
高木先生大の批判は辞めて下さい
847:nobodyさん
09/04/03 11:45:02
>>844
また宣伝か
848:827
09/04/03 15:07:28
返事が遅くなりすいません。
フォームの件ですが色々試しましてSESSIONでいくようにしました。
色々とアドバイス本当にありがとうございます。
それでもう一つ質問なんですが、
フォームのチェックボックスの内容をhtmlに直に書かず、
config.phpなどに$val=array("aaa","bbb","ccc");
みたいな感じで記述しhtmlでforeachを使い
全て書き出すみたいな事をしたいんですが、参考書などを確認したら
配列で記述するのではなくfunctionで
function val(){
$val = array("aaa","bbb","ccc");
return $val;
}
という書かれ方がされてました。
関数にせず配列だけが記述すると何かマズイんですか?
質問が少しわかりにくいですがもしよければ
アドバイスよろしくお願いします。
849:nobodyさん
09/04/03 15:17:48
>>848
$valの中身を将来的にコードからいじる可能性があるならfunction、
可能性がないなら定数のままでいい
850:nobodyさん
09/04/03 15:40:20
最近、他人のブログを批判しながら2ちゃんで宣伝してアクセス数稼ぐのが流行ってるのか?
851:827
09/04/03 15:41:11
>>849
返信ありがとうございます。
例えばこれから先チェックボックスの値dddが増えた場合、
$val=array("aaa","bbb","ccc","ddd");
でも
function val(){
$val = array("aaa","bbb","ccc","ddd");
return $val;
}
でも変わらない気がするんですが・・・
素人質問本当にすいません。
今から考えてみます。
852:nobodyさん
09/04/03 15:48:11
>>851
いい例が思いつかないのだけどこんな感じ。条件によって変わる場合だな
function val(){
$val = array("aaa","bbb","ccc","ddd");
// 天気が雪の場合のみ配列にeeeを追加する
if( $this->weather == "snow" ){
array_push( $val, "eee" );
}
return $val;
}
853:nobodyさん
09/04/03 15:49:16
>>851
前者でおk
854:827
09/04/03 16:12:12
>>852
>>853
返信ありがとうございます。
今後、配列を元に何か条件をつけるなどの機会がある場合は
関数にしておく方が好ましいという事ですね。
例文まで書いていただき本当にありがとうございました!
855:nobodyさん
09/04/03 18:24:43 ZpjcrZDP
文字列のシングルクォーテーションのみを
エンティティに変換したいのですが、どうすればいいのでしょうか?
htmlspecialcharsはダブルクォーテーションも変換しますし・・。
856:nobodyさん
09/04/03 18:32:47
vs php(VS2005評価版)でデバッグ実行しようとすると
次のエラーが出てしまいます。
何が原因なのでしょうか?
Fatal error: Unknown: Failed opening required 'C:/Documents and Settings/繧イ繧ケ繝育畑縺ョ繝ヲ繝シ繧カ/My Documents/Visual Studio 2005/Projects/PHP_TEST/PHP_TEST/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0
文字化けしちゃってますが
C:\Documents and Settings\ゲスト用のユーザ\My Documents\Visual Studio 2005\Projects\PHP_TEST\PHP_TEST\index.php
のところで何かエラーが発生している様です。
※phpのコード
<?php
/* TODO: Add code here */
print("テスト");
?>
857:nobodyさん
09/04/03 19:08:16
>>855
strtr
858:nobodyさん
09/04/03 19:44:58 2mI6CRy6
【OS名】debian linux
【PHPのバージョン】5.2.0
参照渡しで変数を送り
変数が未定義なら空の文字列を返し
変数が定義済みならそのまま返す関数を考えました。
$test = hoge_variable($v);
function hoge_variable(&$v) {
if(! isset($v) ) {
return '';
}
return $v;
}
テストに入る内容は望みのものですが、
変数$vが未定義だった場合、定義されて(?)NULLが入るようです。
この挙動について、どういった理由でそうなるのか、
また$vを未定義のままにする方法はあるのかご教示いただけませんでしょうか。
859:nobodyさん
09/04/03 20:02:31
>>858
&$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL
&$vにしなければよい。
860:nobodyさん
09/04/03 20:14:47
return ''; を return $v=''; でよくね?
定義されてないからNULLだぜ?
861:nobodyさん
09/04/03 20:15:15 2mI6CRy6
>>859
やはりそんな感じだったんですね。
関数はエラーレベルによっては出るNotice: Undefined variable
の対策だったんですけど、&$vでなく$vにするとそこでUndefined variable
がでてしまう感じで…。
定義されたくない時は直接issetをしていくしかないということですかね。
というかそもそもUndefined variable回避に対するアプローチが違っているでしょうか…?
862:nobodyさん
09/04/03 20:18:37
宣言すりゃいいじゃん
863:nobodyさん
09/04/03 20:35:14 2mI6CRy6
状況的には例えばこういう未定義かもしれない所からひっばってくる時で、
$flag = $_POST['flag'];
そういう意味で先の
$flag = hoge_variable($_POST['flag']);
だったんですけど、
例えNULLでも配列に定義されてしまうと、
foreachとかする時に邪魔になったりとかそういう感じのことでした。
やはり基本的には
$flag = '';
if (isset($_POST['flag'])) {
$flag = $_POST['flag'];
}
みたいなことで行くのがいいのですかね。
864:nobodyさん
09/04/03 20:46:30
フレームワークには用意されてたりするけどね
865:nobodyさん
09/04/03 22:15:46
>>856
文字コードがUTF-8でBOMが入っているとか?
UTF-8Nにしてみたら?
866:nobodyさん
09/04/03 22:53:01
>>863
> $flag = '';
> if (isset($_POST['flag'])) {
> $flag = $_POST['flag'];
> }
自分はそうしてる
変数が増えてくるとコードがのびがちなので
三項演算子使って
$flag = isset($_POST['flag'])?$_POST['flag']:null;
といった感じにしてる
867:nobodyさん
09/04/03 23:35:31
>838-840
クォートで処理していると、インジェクションが無いか処理を注視しないといけない。
プリペアドステートメントは、インジェクションが無い事が一目で分かる。
SQLの構文と変数が分離されるので見やすくなるって利点もある。
>863
functon getPostedVariable($key){
return isset($_POST[$key])?$_POST[$key]:null;
}
とかやると楽なのでオススメ。
プログラムの開始時に$_GETと$_POSTとかを丸ごとメンバに持つクラスのインスタンスを生成して、そいつにこの関数を定義する手もある。
メリットが思いつかないレベルならとりあえず忘れておいてもいいけどな。テストが非常にしやすくなる。
$request = new Request($_POST, $_GET);
echo $request->post('flag');
868:nobodyさん
09/04/03 23:36:22
Zend_Request使えよ
869:nobodyさん
09/04/03 23:49:57
宗教上の理由によりお断りします
870:nobodyさん
09/04/04 01:03:53
PHPを勉強し始めたのですがphpではクラスを宣言する場合に、
public private とかって宣言する事は出来ないのでしょうか?
public class Test
{
public function TestMessage()
{
print("あいうえお");
}
}
871:nobodyさん
09/04/04 01:54:48
>>870
classはできない。functionや変数は可能。
872:nobodyさん
09/04/04 01:54:55
>>870
他言語の素養があるおまいさんはまずマニュアルを読みなはれ。
873:nobodyさん
09/04/04 02:00:30
privateなclassってどんなん?
874:870
09/04/04 02:00:58
>>871
サンクス
>>872
.Net(C# / VB.net) & C++とかでこれまで開発をして来ましたが何かばれちゃいましたか。
マニュアルをちょっと読む事にします。
というより一つ疑問なんですけどC#とかC++とかだと次のパターン②でみんな記述しているのに
PHPとかだとパターン②の書き方をする人が多いのはなぜでしょうか?
C#だと今まで私が関わって来たプロジェクトは100%パターン②で記述されています。
【パターン①】
if( 1 == 1)
{
}
【パターン②】
if(1 == 1{
}
875:nobodyさん
09/04/04 02:04:36
>>874
両方ともパターン1かよ
876:nobodyさん
09/04/04 02:05:23
まちがえた
両方ともパターン2かよ
877:nobodyさん
09/04/04 02:08:21
VisualStudioのコード補完のデフォルトがそうなってるだけだろ
JavaやPHP使いはMSみたいに無駄に行数消費するのを嫌うよ
878:nobodyさん
09/04/04 02:09:00
①と②に見える俺は目がおかしい・・・?
てか②括弧閉じてないけど、スペースのことを言ってるのか・・・?
879:874
09/04/04 02:11:43
ああすまん俺の頭が混乱してた
>>874がどちらのこと言ってるのか良く分からないけど
俺は①はメソッドの時に使う。
一応Zendのコーディング規約に則ってやってるけど
個人の作業なら別にそんなの君の価値観でやればいいだろ
880:878
09/04/04 02:13:15
あああ俺は874じゃなくて878
881:nobodyさん
09/04/04 02:14:37
>874
PHPの「標準」なコーディング規約には2つの流儀がある。ひとつはZend、ひとつはPEAR。
で、どっちも1番の括弧スタイルを採用してるんだ。
C++で言えば、MSDNの規約とGNUの標準スタイルが一致しているような状況をイメージすればいいかな。そりゃ合わせるだろ?
PHPが初めての言語です、って奴が多いのも影響していると思う。
勿論、PHP以前に他の言語を学んでいた奴の中には別のスタイルで書く奴もいる。
俺も2番のK&Rスタイルで書くしな。
882:nobodyさん
09/04/04 02:16:56
>>881
URLリンク(framework.zend.com)
if ($a != 2) {
$a = 2;
}
知ったか乙
883:nobodyさん
09/04/04 02:18:31
>882
悪い、寝ぼけてた。
関数定義とクラス定義の箇所を読んでたわ。
PEARもifはそのスタイルだな。
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
884:nobodyさん
09/04/04 02:21:18
MS厨はfunction名を大文字で始めとけ
885:nobodyさん
09/04/04 02:25:13
classの修飾子にはpublic、final、abstractが使えるよ
886:870
09/04/04 02:37:49
>>878 >> 879 >> 880
【パターン①】
if( 1 == 1)
{
}
【パターン②】
if(1 == 1){
0}
の間違いです。括弧が抜けてましたね。
>>877
そう言われれば確かに勝手に整形されちゃいますね。
>>881
なる程2通りの書き方があったんですね。
いずれにせよ①番で統一されているみたいなのでちょっと安心しました。
今後も①で書いて行こうと思います。
(C#)と同じなのでこちらの方が気分的に見やすいです。
PHPでの実務経験が無いので実際の開発現場ではどちらが主に使われているのでしょうか?
887:870
09/04/04 02:39:20
うーん、どう考えても↓の方が見易いのですが、、、、
皆さんも↓の方が見やすくないですか?
>>883
if ((condition1) || (condition2))
{
action1;
}
elseif
((condition3) && (condition4))
{
action2;
}
else
{
defaultaction;
}
888:nobodyさん
09/04/04 02:39:35
書き込むボタン押す前に見直ししろ
889:nobodyさん
09/04/04 02:41:13
俺だったらこれだな。極めて合理的だ
if ( (condition1) || (condition2) ) { action1; }
elseif ( (condition3) && (condition4) ) { action2; }
else { defaultaction; }
890:nobodyさん
09/04/04 02:48:19
>>889
うげぇー
891:nobodyさん
09/04/04 02:51:50
>>889
オナニーコード
892:nobodyさん
09/04/04 02:53:10
>887
そのスタイルはないな。見づらい。
インデントスタイルでガタガタ抜かすお前にはPythonが合っていると思う。
Pythonにはどのインデントスタイルが見やすいとかいう議論が一切存在しないぞ。
893:nobodyさん
09/04/04 03:03:22
>>887
視点移動が多くなって見づらい
894:nobodyさん
09/04/04 03:25:39
>>892 >>893
本気で言ってますか?
コードを詰めまくって書くよりゆとりを持たせたコードの方が見易いし、
メンテナンス性もあがる気がするのですが。
895:nobodyさん
09/04/04 03:30:54
それはひらがなだけで書かれた文章の方が読みやすいってのと同じレベルの主張だと思う。
まぁコーディングスタイルは宗教論争なんで、不毛なダケなんだけどさ。
896:nobodyさん
09/04/04 03:31:20
ZendとかPEARとか使ってるなら、逆効果だろ
統一させた方が見やすい
897:nobodyさん
09/04/04 04:00:44
見やすいのはいいけどスクロールしないと下のほうが見えなくなるのが無理
898:nobodyさん
09/04/04 04:11:29
>>887
そんなとこより括弧と条件式の間のスペースを空けろってな
899:nobodyさん
09/04/04 05:30:26
オレ竜で書くのがいちばんさ
900:nobodyさん
09/04/04 05:58:30
>>887
EclipseでJavaとPHPをやってる俺からいうと
if (condition) {
}
のほうが見やすい
他の人も同じようなこといってるが
最初に使い慣れたIDEの標準の補完機能によって
どちらが使いやすいか分かれるんだろう
あとはコーディング規約の問題
901:nobodyさん
09/04/04 07:35:04 +rg3YxkW
fopenってロックの引数がないんですが
ちゃんとロックされるんですか?
同時書き込みでファイル壊れたりしませんか?
902:nobodyさん
09/04/04 07:37:06
fopenはリソースを指定してるだけ
書き込みを行う関数はfwrite
903:nobodyさん
09/04/04 07:39:05
マニュアルのちょっと上にflockってあるだろ
904:nobodyさん
09/04/04 07:43:24
ロックは別にするんですね
ありがとうございました。
905:nobodyさん
09/04/04 11:05:08 UT159Z4L
winでは動かない関数があるのでこのさい仮想マシン上にlinuxを入れることにしました
ノートPCなので容量を抑えたいのですが、linuxしてる方でおすすめのものがございましたら教えて下さい
906:nobodyさん
09/04/04 11:16:09
俺、クラスや関数は>>874でいう①、条件文なんかは②で書いてる・・・・
907:nobodyさん
09/04/04 11:42:14
①の書き方って、昔ならではのC言語の関数書くときの引数の型宣言の名残なのかね
908:nobodyさん
09/04/04 12:46:42
現在Apache+PHP5+MySQL5を使用してWEBサイトを作る練習をしているのですが、
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\
hogehoge.html
tomato.php
に各WEBページ(phpファイル)を置いて
URLリンク(localhost)
でアクセスしているのですが、これを
C:\Work
hogehoge.html
tomato.php
でアクセス出来る様にするにはどうすれば良いでしょうか・
※デフォルトのパスをC:\Workにしたいと思っています。
909:nobodyさん
09/04/04 12:47:32
php関係ない
apacheのdocument root
あと>>1
910:908
09/04/04 13:04:00
>>909
ありがとうございます。
document root を
【httpd.conf】
DocumentRoot "C:/htdocs"
に変更しApacheを再起動したのですが
Web サイトによってこのページの表示を拒否されました
というエラーが出て一向にページを見る事が出来ません。
なぜでしょうか?
911:nobodyさん
09/04/04 13:13:06
ファイルをC:/Workにおいてるのになんでhttpd.confのほうは「C:/htdocs」にしたん?
912:nobodyさん
09/04/04 13:41:34
>>910
>>1読め糞野郎
913:nobodyさん
09/04/04 13:43:54
ていうかPHP関係ないって言ってんだろカス
914:nobodyさん
09/04/04 13:58:00
DocumentRoot を C:/Work にすればいいんじゃねーの。
あとID出せよ
915:nobodyさん
09/04/04 15:00:42
documentrootだけ変えても意味ないよ
documentrootのディレクトリ設定のパスも書き変えないと意味ないよ
916:908
09/04/04 15:19:05
>>911 ファイルは、C:/htdocsに配置しました。
>>914
IDを出す、 というのは所謂 fusianasan ですか?
>>915
ありがとうございました。
設定ファイル系を色々といじってみたところ無事動作する様になりました。
ありがとうございました。
917:nobodyさん
09/04/04 15:27:18
ルールも守れないような奴は二度と来んな
918:858
09/04/04 15:39:59 Q5CHJrya
遅レスすみません。
>>866氏>>867氏他皆様ありがとうございます。
いろいろ試してみたいと思います。
919:nobodyさん
09/04/04 20:31:48
慇懃無礼なやつだなw
920:220x151x2x6.ap220.ftth.ucom.ne.jp
09/04/04 20:44:31
◆質問用テンプレ
【OS名】WindowsXP
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql5
【質問内容】
セッションが破棄されるタイミングがいまいち分かりません。
セッションファイルの数を数える事により、現在サイトにアクセスしている人の
大まかな数を数えているのですが、ブラウザを終了してもセッションファイルは残ったままです。
理想を言えば、ユーザにログインボタンを押してもらい session_destroy を呼ぶ
事によりセッションファイルを削除するのが良いとは思いますが、
如何せんブラウザなのでログアウトボタンが必ず押される保障はありません。
ブラウザが閉じられてから5分したらセッションファイルを削除する、といった事は可能なのでしょうか?
通常セッションは一定時間経てば破棄されるらしいのですが、phpの場合はどこで設定すれば良いのでしょうか?
921:nobodyさん
09/04/04 20:48:04
>>920
>>1
922:nobodyさん
09/04/04 21:11:33
>>920
頑張ってfusianasanしたのはいいんだが君が表示してるのはIPだ
IDを出してくれたまえ
923:nobodyさん
09/04/04 21:12:45
ID出てないが一応マジレスするとブラウザが閉じられたという情報は送られません
924:nobodyさん
09/04/04 21:39:31
URLリンク(jp2.php.net)
いつ消えるかはsession.gc_maxlifetimeで決まる。
集計は、閉じられた情報は取得できないので、セッション変数に「最終利用日時」を記録しておく。
画面を表示するたびにこれを更新して、集計時はその数字を見て判別する、という手がある。
例えば、5分以内にサイトにアクセスした人の人数を「現在サイトにいる人数」と見なすとかな。
ファイルだと大変なので、DBなどの集計しやすい場所にセッション情報を格納するとやりやすい。
925:nobodyさん
09/04/04 22:06:27
>>924
荒らすな
926:nobodyさん
09/04/04 22:18:43
俺はセッション使わないでアクセスログでオンラインカウンターをやってる
927:920 ◆gRDEQwu9i2
09/04/04 22:21:55
>>922
これの事だったんですねw
勘違いしてました。
>>923
そうですよね。
>>924
ちょっと色々といじってみます。
>>925
別に荒らしてはいない気がしますが・・・
>>926
DBにアクセス情報を記録させてそこで判定した方が確実で簡単かもしれませんね。
928:nobodyさん
09/04/04 22:25:35
死ねカス
929:nobodyさん
09/04/04 22:34:25
春だなw
930:nobodyさん
09/04/04 22:34:35
>>927
まじれすすると、それはトリップ
ID表示はメール欄を空白にするかageと書く
931:nobodyさん
09/04/04 23:03:22
てst
932:nobodyさん
09/04/04 23:06:05
さくらインターネットでサーバ借りてるんだけど
function ExecuteSanitizing(&$strSanitizing)
{
$strSanitizing = htmlentities($strSanitizing, ENT_QUOTES, mb_internal_encoding());
}
$str = "<b>あいうえお</b>";
$str = instance->ExecuteSanitizing($str);
echo $str;
として出力するとローカルでは文字化けしないのにさくらインターネットだと文字化けしちゃいます。
なぜでしょうか?
933:nobodyさん
09/04/04 23:26:21
エスパーさん出番ですよ
934:p7033-ipbfp405osakakita.osaka.ocn.ne.jp
09/04/04 23:30:26 UHDnoHcu
私を笑いものにするがいい
935:nobodyさん
09/04/04 23:40:07
>>932
>>1
936:fusianasan
09/04/04 23:40:52
俺はfusianasanを制御できるから書きこんでもIP表示されないんだけどさ
937:nobodyさん
09/04/04 23:43:27
>>936
それってどうやってやってんの?
938:fusianasan
09/04/04 23:46:28
>>937
いや、おれ2ちゃんのボランティアやってるからこのぐらいの特権は持ってるよ
939:nobodyさん
09/04/04 23:48:52
f&lrm;usianasan
なにがボランティアだつまらん
940:nobodyさん
09/04/04 23:52:00
釣れたw
941:f&lrm;usianasan
09/04/04 23:57:19
テスト
942:fusianasan
09/04/04 23:58:04
>>939
どうすれば出来るですか?
あいうえお
943:fusianasan
09/04/05 00:00:02
てす
944:nobodyさん
09/04/05 00:06:15
>>932
ローカルとさくらのphp.iniのmbstringの設定が違う
945:nobodyさん
09/04/05 00:30:10
>>901
fopenはファイルのポインタを獲得するだけ。
ロックはその後で、別の関数で行う。
946:nobodyさん
09/04/05 00:31:03
URLリンク(ameblo.jp)
クラスメソッドをabstractにしようと思いまして、abstractをつけて関数定義したところ、以下のようなエラー。
Class SampleClass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods
エラーの原因がわからず、30分も調べてしまいました。
原因はclassの定義で本来なら「abstract class SampleClass」 としなくてはいけないところを
「class SampleClass」と定義していたことでした。
エラーメッセージからでは気づきにくいことでした・・・
だとさ
947:nobodyさん
09/04/05 00:42:58
ポインタって言うな
948:nobodyさん
09/04/05 00:45:11
SampleClassには1つのabscractメソッドが含まれます。
だからこのクラスはabstractとして宣言されるか、残りのメソッドを実装しなければいけません。
このメッセージで分かりづらいってなら、どう出せばいいんだろう。
949:nobodyさん
09/04/05 00:48:33
MSもSUNもやってるんだから
ZendJapanもエラーメッセージを日本語化すべきだな
950:nobodyさん
09/04/05 01:35:51
日本語化したら分かるんかい?
951:nobodyさん
09/04/05 02:02:56
>>944
ありがとうございます。ローカルのphp.iniと設定をあわせたところ
正常に表示される様になりました。
ちょっとphp.iniについて質問があるのですが
ローカルだと
C:\WINDOWS\php.ini
という具合にphp.iniファイルを配置しているのですが
レンタルサーバ(さくらインターネット)の場合には
/home/street-fighter/www/php.ini
という具合にphp.iniを自前で用意するのが普通なのでしょうか?
※今後、さくらインターネット以外のサーバを借りるかもしれないのですが、
さくらインターネット以外の場合にも、*/www/直下にphp.iniファイルは保存
するのでしょうか?
/home/street-fighter/www/php.ini
952:nobodyさん
09/04/05 02:07:24
>>951
自分が借りているレンタルサーバーの場合、
(1)そもそもユーザーがphp.iniを編集できない
(2)php.iniがpublic_htmlの外に置いてあった
この2パターンがありました。
953:nobodyさん
09/04/05 02:09:39
>>951
>>1
954:nobodyさん
09/04/05 02:39:34
URLリンク(asobi.sqweebs.com)
質問用テンプレ作りました。
どうぞテストもかねて使ってみてください。
955:nobodyさん
09/04/05 03:48:15
ブラクラ注意
956:nobodyさん
09/04/05 10:38:30
>>954がもしブラクラなら運営板で報告してもらえる
957:nobodyさん
09/04/05 11:30:01 rlL9K/DC
変数内の特定の文字列を取得しようと、以下のようにしました。
//$text
-----
あいうえお
-----
//取得する為の正規表現
preg_match_all("/-----¥n(.*)¥n-----¥n/is",$text,$array)
しかし、「-----」の間を上手く取得できません。
どういった正規表現のコードを書けば良いか教えて下さい。
958:nobodyさん
09/04/05 12:04:57
そりゃs修飾子付けたら¥nと.の区別が無くなるがな
959:nobodyさん
09/04/05 12:10:08
せめてこう書けよ
-----
↓
-{5}
960:nobodyさん
09/04/05 12:10:54
-{5}\n(.*)-{5}\n
961:nobodyさん
09/04/05 12:20:05
どうでもいいが改行は必ず\nなのか?
\rとか\r\nは含まないんだな?
962:nobodyさん
09/04/05 12:43:45
Linuxサーバでそんなファイル作ったら行末に変な文字出ちゃうぜ
環境によって必要ならそういう対応すればいいだけ
963:nobodyさん
09/04/05 12:52:14
変な文字っていっても^Mに見えるCR(Carriage return)でしょ
ウニックス系で\nと書くとLF(0x0a)を表し、
ウィンドズ系で\nと書くとCR+LF(0x0d 0x0a)を表すのが基本でしょ
964:957
09/04/05 13:26:52
皆さん、レスありがとうございます。
ただ、以下のようにしましたが、やっぱり取得できません。
$text = trim("
-----
あいうえお
-----
");
preg_match_all("/-{5}\n(.*)-{5}\n/",$text,$array);
965:nobodyさん
09/04/05 13:52:29
lol
trim
trim
trim
trim
trim
trim
trim
trim
trim
trim
966:nobodyさん
09/04/05 13:55:26
>>964
>1
スレのルールも守れない奴に正規表現が守れるものか
967:nobodyさん
09/04/05 13:55:58
$str = "
-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);
968:957
09/04/05 14:00:27 rlL9K/DC
2回目以降もID出すんですね。sage無ければいけないと思っていました。
それで、>>967のコードをそのままコピーして
print_rで出力してみたのですが、やはり文字の「あいうえお」が取得できません。
テスト環境がWindowsXPのファイルがUTF-8ですが、それが関係するのでしょうか?
ただ、他の文字コードにしてもやっぱり取得できません。。
969:nobodyさん
09/04/05 14:03:21
うにコードならU修飾子ぐらい付けろや
970:nobodyさん
09/04/05 14:06:09
俺の環境では取得できるんだがな・・・
971:nobodyさん
09/04/05 14:08:54
環境によるのかな
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "URLリンク(www.w3.org)">
<html xmlns="URLリンク(www.w3.org)">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>
</head>
<body>
<?php
$str = "
-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);
print_r($m);
?>
</body>
</html>
結果
Array ( [0] => Array ( [0] => ----- あいうえお ----- ) [1] => Array ( [0] => あいうえお ) )
972:957
09/04/05 14:11:33 rlL9K/DC
>>970-971
そうですか・・。
テストしているローカル環境のPHPが5.2.5で
試しにさくらのレンタルサーバ(5.2.8)にもアップして試してみたのですが、
971さんのような結果になりません・・。
973:nobodyさん
09/04/05 14:11:50
俺はこれでおkだった
<?php
$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}\n(.*)\n-{5}/",$text,$array);
var_dump($array);
?>
974:nobodyさん
09/04/05 14:12:26
>>972
>>969
975:nobodyさん
09/04/05 14:18:21
まさかと思うけどさー
改行コードがCR+LFだからとかいうオチじゃないよね?
もしこれで通ったらぶっ飛ばすぜ
<?php
$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}[\n|\r]+(.*)[\n|\r]+-{5}/",$text,$array);
var_dump($array);
?>
976:nobodyさん
09/04/05 14:23:01
別に員だけどさ
お尻の改行だけを取るならrtrim("\n",変数)の方が誰が見ても分かりやすくていいと思うんだ
977:nobodyさん
09/04/05 14:24:31
[\n|\r]
こういう書き方するなら正規表現もっと勉強したほうがいい
978:nobodyさん
09/04/05 14:29:09
>>975
× \n|\r
○[\r]?\n
979:957
09/04/05 14:47:03 rlL9K/DC
>>973-978
全く反応無しです・・。
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
という結果にしかなりません・・。
作成手順は、これまでDreamweaverを使っていたのですが、terapadに変更しました。
そしてこれまで挙がっているソースをコピーして保存して実行したのですが、
それでも上記のような結果になります。
文字コードをEUCにしてもSJISにしても結果は同じです・・。
やっぱりPHPのバージョンの問題ですかね・・・
980:nobodyさん
09/04/05 14:54:28
pearの勉強をしよと思ってるんですけど
オススメの入門サイトはありますか?
できればpearを使った場合のメリットとかも十分に解説されているサイトを希望します。
981:nobodyさん
09/04/05 15:07:29
terapadとかナメてんのかよ
サクラエディタとか秀丸とかEmEditor使えよ
982:nobodyさん
09/04/05 15:24:51
釣りだろ
983:nobodyさん
09/04/05 16:37:11
最近よくいる低レベル回答者を叩くのが楽しみでここ見てます
984:nobodyさん
09/04/05 16:38:57
叩いてないじゃん
985:nobodyさん
09/04/05 22:31:43 QUmCZ8RS
配列にひらがなのみの文字列を不定数で格納します
この配列をあいうえお順でソートしたいと思います
標準関数ではあいうえお順でソートする関数がないので、自分でユーザー定義関数にしようと思います
あいうえお順にするためにどのようなアルゴリズムを用いればいいのかどなたかヒントだけでもお願いいたします
【サンプルの配列】
$hiragana = array(
"かいわれ",
"れたす",
"あめ",
"さらだ"
);
↑をソートして、結果が↓
$hiragana = array(
"あめ",
"かいわれ",
"さらだ",
"れたす"
);
986:nobodyさん
09/04/05 22:36:37
sort($hiragana);
987:nobodyさん
09/04/05 22:46:14
>>986
平仮名はソートでけへんよ
988:nobodyさん
09/04/05 23:08:08
>>986 じゃないが、とりあえず utf-8なら問題なくできたみたいだけど、なんか違うのけ?
989:nobodyさん
09/04/05 23:56:37
バイナリ単位での比較だからひらがなだろうができる
990:nobodyさん
09/04/06 00:09:45 CWy5GQCe
質問
CGIゲームを設置したんだけど
サイトによっては自動的に更新されてるんですよ
ページを定期的に読み込むにはどうしたらいいのか教えてください
991:nobodyさん
09/04/06 00:16:48
cron
992:nobodyさん
09/04/06 01:04:38
meta refresh
993:nobodyさん
09/04/06 04:19:15
次スレ
スレリンク(php板)
994:nobodyさん
09/04/06 05:48:09
995:nobodyさん
09/04/06 22:26:16
ume