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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/09(月) 02:14:28ID:HyrthkeE
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0671nobodyさん2009/03/28(土) 00:29:13ID:???
>670
MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。
0672nobodyさん2009/03/28(土) 00:34:00ID:???
バリデーションがC??
0673nobodyさん2009/03/28(土) 02:42:46ID:???
画面やテーブルごとにチェックする項目が異なるのに
バリデーションがCはありえない
0674nobodyさん2009/03/28(土) 06:25:24ID:xuBHT5om
newしたオブジェクトを変数に代入せずにメソッドを呼びたいのですが
そういう書き方ありますか?
{new Hoge()}->method()
みたいなイメージです
0675nobodyさん2009/03/28(土) 06:46:27ID:???
>>674
http://74street.ddo.jp/index.php?PHP%2Ftips%2Fphp003
これかな?

ちなみに、インスタンス化せずメソッドを使う場合、宣言時にメソッドに「static」を付け、「クラス名::メソッド名」で呼び出す。。

class SampleClass {
public static function func($a,$b){
return $a + $b;
}
}
$ans = SampleClass::func(1,2);
0676nobodyさん2009/03/28(土) 08:45:03ID:???
>>674
それは不可能
0677nobodyさん2009/03/28(土) 08:49:24ID:???
>>676
お前、馬鹿だろ
前のレスで完結してるのにわざわざくだらん横槍を入れる必要はない
0678nobodyさん2009/03/28(土) 08:56:18ID:???
静的メソッドしか呼び出せないじゃん
0679nobodyさん2009/03/28(土) 08:58:31ID:???
>>676じゃないが、>>675 は別モンだと思うけどな。

>>674は何でそんなことしたいんかナゾだけど。目的も書くべきだろ。
ただの興味ということなら、それはそれで良いけど。
0680nobodyさん2009/03/28(土) 11:44:19ID:???
というか何の意味があるんだろう
0681nobodyさん2009/03/28(土) 12:52:45ID: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
0682nobodyさん2009/03/28(土) 14:13:07ID:???
>>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となる

変数でそんな事が出来るか記憶を辿ってみたが…出てこない
件を解決する簡単な方法は関数を作ることだと思うんだが?
0683nobodyさん2009/03/28(土) 14:21:32ID:???
>>681
掛け算の結果にまで参照変数を反映させるのは無理。もう一回掛け算するしかない
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
$b = $a * 2;
echo $b;
0684nobodyさん2009/03/28(土) 14:30:41ID:jCCBzDpK
pChartを使ってレーダーチャートを描いています。
デフォルトでは縦軸にラベル(目盛?10、20、30...など)が表示されるのですが、
これを表示しないようにするにはどうすればよいのでしょうか?
公式のドキュメントを読んだのですが、わかりませんでした。

どなたか分かる方がいましたら、よろしくお願いします。
06856812009/03/28(土) 15:12:28ID:0oeFWAvW
>>682-683
ありがとうございます。
変数のみでは求めることは無理なんですね。関数で処理することにします。
0686nobodyさん2009/03/28(土) 15:25:27ID:???
多分681がイメージしているような、「$aを2倍して返す処理」自体を$bに変数として格納するような仕組みはクロージャという。
関数をその場で組み立てるイメージだな。普通に関数を使う場合と違い、「2」の部分を$bの生成時に動的に組み込める。
JavaScriptやRubyでは可能、JavaやPHPでは不可能。PHPでは次のバージョンには盛り込まれる見込み。
これもまあ、関数を作っているわけだけど。
クラスを使ったりグローバル変数を使ったりしていいなら、今のPHPでも同じ処理は一応可能。
0687nobodyさん2009/03/28(土) 16:48:33ID:y1nm6eda
POSTされた各フォーム毎の項目チェックをする時に、
$_POSTを直接チェックするのは何か問題がありますか?

if(!isset($_POST["name"])){
echo "未記入です";
}

それか全て一旦POSTを変数に代入してチェックした方がいいですかね?
0688nobodyさん2009/03/28(土) 17:15:52ID:???
まったく問題ない
06896872009/03/28(土) 17:25:52ID:???
>>688
返信ありがとうございます。
なんとなく自信がなく聞いてみたんですが安心しました。
ありがとうございました。
0690nobodyさん2009/03/28(土) 19:01:42ID:???
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【ショタ】3次専ショタスレ 12【女装・美少年】 [Download]

このスレに変態がいる!!
0691nobodyさん2009/03/28(土) 19:31:18ID:???
phpの関数名でググった時
公式のドキュメントじゃなくて
phpspotのアフィドキュメントが上位に来るのがむかつくんだけど
どうしたらいい?
googleで除外urlを指定できたらいいんだけど
0692nobodyさん2009/03/28(土) 19:36:20ID:???
>>691
>>1
0693nobodyさん2009/03/28(土) 22:31:41ID:???
>>690
呼んだ?
0694nobodyさん2009/03/28(土) 22:48:03ID:???
http://journal.mycom.co.jp/news/2009/03/26/029/index.html
0695nobodyさん2009/03/28(土) 22:52:21ID:???
GOTO文wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0696nobodyさん2009/03/28(土) 23:16:06ID:???
GOTOを否定する奴は例外も使うなよ
0697nobodyさん2009/03/28(土) 23:27:52ID:???
gotoよりはfinallyが欲しかったねぇ。
なんか都合があるんか知らんが。
0698nobodyさん2009/03/29(日) 05:04:23ID:???
gotoってどういうときにつかうの?
0699nobodyさん2009/03/29(日) 06:25:15ID:???
帰ってきてほしくない時
0700nobodyさん2009/03/29(日) 09:35:20ID:???
人生をやり直したいとき
0701nobodyさん2009/03/29(日) 13:21:29ID:EDw1f4T+
define("TEST",realpath("."));

という定数があったとして、TESTの中身が「/home/test/public_html」だとします。
通常は、定数指定して
include_once(TEST.'/test.php');

としてディレクトリ指定代わりに出来ますが、
定数の中身で表示する事って出来ませんでしょうか?上の例で言うと
include_once('/home/test/public_html」'.'/test.php');
と言うように書き出せればと思っています。
0702nobodyさん2009/03/29(日) 13:28:04ID:???
表示ってどこに?ソースコード中に?
07037012009/03/29(日) 13:29:17ID:???
>>702
fopenでファイル作成する時に、その出力側のファイル上に

include_once('/home/test/public_html'.'/test.php');

という形で記述されて欲しいのです。
0704nobodyさん2009/03/29(日) 13:31:15ID:???
意味が分からない
fopenでtest.phpを作成するってこと?
0705nobodyさん2009/03/29(日) 19:34:50ID:???
fopenはファイル開くだけだろ。PHPとしては動かないよ
PHPスクリプトをファイルとして開く理由がわからんが
0706nobodyさん2009/03/29(日) 20:07:08ID:g6t/L+Oe
http://atelier-ps3.jp/rorona/

このサイトいくらぐらい掛かってると思いますか?
0707nobodyさん2009/03/29(日) 20:07:18ID: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'));
0708nobodyさん2009/03/29(日) 20:08:51ID:???
return $this->_value[$key];
でした
結果は同じですが
0709nobodyさん2009/03/29(日) 20:18:24ID:???
参照だから。
0710nobodyさん2009/03/29(日) 20:20:00ID:???
リファレンス返してるからだろ
0711nobodyさん2009/03/29(日) 20:23:38ID:???
リファレンスだと何故noticeが出ないのですか?
0712nobodyさん2009/03/29(日) 20:34:22ID:???
リファレンスって何か知らんで使ってんの?
0713nobodyさん2009/03/29(日) 21:07:35ID:???
>>711
参照を張るとzvalが増えて変数を定義したのと同じことになるからな。
計算機の基礎だと思うが。
0714nobodyさん2009/03/29(日) 22:45:02ID:???
>>696
強盗みたいだから否定してるのであって例外は問題ない、というのが今の反GOTO派の主流
0715nobodyさん2009/03/29(日) 23:05:06ID: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>



お手数ですがよろしくお願いします。
0716nobodyさん2009/03/29(日) 23:19:48ID:???
pager?
0717nobodyさん2009/03/29(日) 23:21:58ID:???
>>713
なるほど、参照を張ると変数定義と同じになるんですね。
0718nobodyさん2009/03/29(日) 23:22:53ID:???
雑だけど。

$i = 1;
while ($row = mysql_fetch_object($res)){

print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
 ++$i;
}
}
0719nobodyさん2009/03/29(日) 23:28:38ID:???
>715
HTMLマークアップが不正な件。
8個の場合、2行目3列目までで終わるが、余った2セルはどう埋めるんだ?

>718
<tr>がない。
07207152009/03/29(日) 23:39:03ID: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の倍数にしておきます。


皆様ありがとうございました。
0721nobodyさん2009/03/30(月) 05:37:45ID: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


※もうひとつのスレッドでは答えがわからずじまいで、
 どうしたらよいかヒントだけでもつかめたらと思います。
 どうぞお願いいたします。
0722nobodyさん2009/03/30(月) 08:22:50ID:???
マルチ乙
0723nobodyさん2009/03/30(月) 12:12:19ID:ObvykTsh
初心者ですが質問させて下さい。
http://www.gen-x-design.com/projects/php-thumbnailer-class/
このサイトのthumbnail.inc.phpを使って画像をリサイズしてサムネイルを生成したのですが
いまいち仕組みがわからずにいます。
リサイズされた画像はどこかに保存されているんでしょうか?

0724nobodyさん2009/03/30(月) 12:16:26ID:???
スクリプトの仕組み解らなくてもOSのファイル検索くらいは使えるだろ
0725nobodyさん2009/03/30(月) 12:28:05ID:ObvykTsh
OSのファイル検索?
実際にサイトにアップして表示させてみました。
そしたらリサイズされた画像が表示されたんですが
サイトのどこをみても画像が増えた形跡がありません。
リサイズした画像を別に保存するわけではないのですか?
0726nobodyさん2009/03/30(月) 12:41:43ID:???
いやだからファイル探したいならファイル検索すればいいじゃん
0727nobodyさん2009/03/30(月) 12:49:44ID:ObvykTsh
検索したくても、どんな形式でどんなファイル名で保存されてるかわからないので
画像のアドレスをみても
show_image.php?filename=sample.jpg&width=250&height=250
と書いてあるだけなんです
0728nobodyさん2009/03/30(月) 13:07:26ID:???
別に保存されてないんじゃねーの?
0729nobodyさん2009/03/30(月) 13:09:40ID:???
これしてねーんだろ
$thumb->save('path/to/file.jpg',80);
0730nobodyさん2009/03/30(月) 13:13:48ID:ObvykTsh
あ、それしてないですね
それをしないとただ大きい画像を縮小してるだけで意味ないんでしょうか?
0731nobodyさん2009/03/30(月) 13:26:05ID:???
サムネで表示しただけで保存されるほうがうっとうしいわ
0732nobodyさん2009/03/30(月) 13:53:38ID:???
っということは、大きい画像を元に
サイズも容量も小さくして表示ができるってことでいいのでしょうか。
サムネイル画像の保存をせずに
0733nobodyさん2009/03/30(月) 14:28:36ID:Nai97eUH
頭がこんがらがってしまったので質問させて下さい。
データベースを用いてアプリケーションを作る際
例えば該当するIDを選んでupdate、deleteする時に、
該当するIDがある時は正しく削除され、削除されました。
とメッセージを返すんですが何らかの形で該当しないIDが
投げ込まれた時は一般的にはどのような処理をされていますか?
まず該当するIDがあるかselectで調べて、ある場合はupdateもしくは
deleteで処理みたいな形ですかね?
アドバイスよろしくお願いします。
0734nobodyさん2009/03/30(月) 14:50:52ID:???
それでいいよ
0735nobodyさん2009/03/30(月) 15:01:56ID:???
>>733
http://jp.php.net/manual/ja/pdostatement.rowcount.php
とか類似関数で。
07367332009/03/30(月) 15:12:04ID:???
>>734-735
返信ありがとうございます。
これまでなんとなくしか理解できてなかったのですが
今スッキリしました。
本当にありがとうございました。
0737nobodyさん2009/03/30(月) 18:45:52ID: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エラー
を表示させたいのですが、何か方法はございませんでしょうか。
よろしくお願いします。
0738nobodyさん2009/03/30(月) 23:26:09ID:???
>>737
readfileでエラーページの内容をそのまま流しちゃダメなの?
http://jp.php.net/manual/ja/function.readfile.php
0739nobodyさん2009/03/31(火) 06:15:24ID:???
クラスについて質問です。
ttp://www.m-fr.net/study/object/object04.html
このサイトで、

>で、こうします。

>obj = new 三角クラス;
>適当な変数 = obj->get_1辺の長さ(); // データの取得
>obj->set_1辺の長さ(適当な値); // データの設定

とあるのですが、下の二行は順序が逆の方がよいのでは?と思いました。
setしてからそのsetした結果得られる値をgetする、みたいに。
その方がしっくりくるというか・・
もしかしたら、何か理由(もしくは自分の勘違い)があって、
getをまず書いておいて、そのsetする一行を書く、という形式にしてるのか
よくわからないので、教えていただけないでしょうか
よろしくお願いします。
0740nobodyさん2009/03/31(火) 08:44:30ID:???
2行目で得た値を3行目で使っているわけではないと思うぞ?
getとsetの別々の事例かと
あとスレタイ
0741nobodyさん2009/03/31(火) 10:26:43ID:MdY2FCLh
WindowsXP上で開発を行っているのですが、
Windowsの絶対パスでrequireで読み込むとエラーになります。

require_once("C:\htdocs\test.php");

failed to open stream: Invalid argument

どうしたら読み込めるようになるのでしょうか?
0742nobodyさん2009/03/31(火) 10:35:59ID:???
echo "C:\htdocs\test.php"; やってみそ
0743nobodyさん2009/03/31(火) 10:53:51ID:???
>>683
今コード用意しますのでちょっと待っててくださいね
0744nobodyさん2009/03/31(火) 11:14:25ID:???
アンカ間違えましたね^^;
>>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);
0745nobodyさん2009/03/31(火) 11:20:52ID:???
>>737

rewrite
0746nobodyさん2009/03/31(火) 12:20:45ID:???
>>737
あなたのやろうとしてることはおすすめできない
0747nobodyさん2009/03/31(火) 13:58:39ID:???
>>737
アパッチ「俺の仕事はもう終わってんだからバックパスすんな」
0748nobodyさん2009/03/31(火) 15:08:08ID:H7khy467
+食べ物
++りんご
++バナナ
++ぶどう


↑の4行を↓のようにhtmlタグとして出力したいのですが
wikiみたいなことがやりたいのですがどなたかヒント頂けないでしょうか?

<ul>
<li>食べ物</li>
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</ul>
0749nobodyさん2009/03/31(火) 15:12:34ID:???
wikiのソース見ればいいのでは?
0750nobodyさん2009/03/31(火) 15:19:27ID:???
>>749
HTMLソース見てもしょうがないだろw
0751nobodyさん2009/03/31(火) 15:27:10ID:???
>>749
そんなんで片付くならこのスレが82代まで行かないでしょw
答えてやればいいじゃんwww
0752nobodyさん2009/03/31(火) 15:27:12ID:qal8dqXu
>>738,745
ありがとうございます。
>>746-747
本当はファイルが存在しているのに無理矢理サーバーにファイルが存在していないことにして、エラーページを表示させるところが
でしょうか。それとも、「header ( "HTTP/1.0 404 Not Found" , true , 404 );」がおすすめできないのでしょうか。

もし、そうであれば、「header("HTTP/1.0 301 Moved Permanently") ;header("Location: http://www.example.com/") ;」
などのリダイレクトであれば大丈夫ですか。
0753nobodyさん2009/03/31(火) 15:27:13ID:WkuOnscP
【OS名】TurboLinux
【PHPのバージョン】4.3.11
【連携ソフトウェア】Apache2
【質問内容】
auto_prepend_fileで指定したファイルが動いてくれません。

.htaccessで、「php_value auto_prepend_file "ap.php"」と記述しました。
ap.phpの中身は「<? echo("test"); ?>」です。

これでhttp://hostname/index.phpを開くと、
画面上部に「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のコードが実行されていないようです。
この現象について分かる人がいらっしゃいましたらご教示下さい。
0754nobodyさん2009/03/31(火) 15:50:33ID:???
>>753
>ap.phpの中身は「<? echo("test"); ?>」です。

<?使えるなら<?=使えよ
ていうか<?phpって書く方を推奨
0755nobodyさん2009/03/31(火) 15:53:09ID:???
>>753
よくわかんないけど全てのページのヘッダに挿入するならmod_layout
ttp://d.hatena.ne.jp/hogem/20090321/1237569005
0756nobodyさん2009/03/31(火) 19:15:21ID:???
>>748
質問に対する答じゃないけど、HTMLは
<ul>
<li>食べ物
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</li>
</ul>
こう書いた方がいいと思う。
0757nobodyさん2009/03/31(火) 20:09:26ID:???
>>748
ttp://d.hatena.ne.jp/noopable/20090202/1233528691
0758nobodyさん2009/03/31(火) 22:31:20ID:???
>674
今日めっけた
ttp://d.hatena.ne.jp/anatoo/20090320/1237530764

function ref($obj){ return $obj; }
ref(new Hoge)->doSomething();

良し悪しはともかく、発想は面白い。
0759nobodyさん2009/03/31(火) 22:32:52ID:???
そこまでして1行にして何のいいことがあるんだろう
0760nobodyさん2009/03/31(火) 23:09:23ID:???
余計な関数が増えることには何の抵抗もないのかw
0761nobodyさん2009/03/31(火) 23:32:57ID:???
一時変数が(複数の場所で)増える事と関数が増える事のトレードオフなら、俺なら関数を増やす。
このためだけにgetInstance()とかfactory()とか定義したら、関数増やすよりタチ悪いしな。
ただ、一般的な書き方じゃないので、ref()の定義を探さないと読めない=コードの可読性が落ちるのが難点。
JavaScript界の$()みたいに、一般的なハックになったらアリかな。
0762nobodyさん2009/03/31(火) 23:35:38ID:???
他言語でできるのにPHPでできないのがむかつくんだよな
0763nobodyさん2009/03/31(火) 23:38:29ID:???
オブジェクトの基底クラスにstaticなnewが実装できたら
Hoge::new()->doSomething();
ってできるのにな
0764nobodyさん2009/04/01(水) 00:05:10ID:???
singletonでいいじゃん
0765nobodyさん2009/04/01(水) 01:36:40ID:???
一行にしたいって要求に対して、singleton提案するやつw
0766nobodyさん2009/04/01(水) 01:37:54ID:???
>>761
いっしょに仕事したくないタイプだわ。なんだよrefって
0767nobodyさん2009/04/01(水) 02:05:39ID:???
>>765
一行になるじゃん
0768nobodyさん2009/04/01(水) 02:20:35ID:???
メソッドチェーンがやりたいだけだろ
0769nobodyさん2009/04/01(水) 02:32:15ID:???
誰が?
0770nobodyさん2009/04/01(水) 02:51:42ID:???
俺!
0771nobodyさん2009/04/01(水) 03:16:29ID:???
singletonはウンコすぎ。singleton依存症は治る病気だから通院したほうがいいぞ

1行で書きたいって理由だけでstaticなクラスメソッドを増やすのは流石にナシだろ
だいたい1つや2つならともかく、そういう書き方がしたくなるようなJavaっぽい書き方をしてたら抽象データ型なんて死ぬほどできるわけで
そういうクラス全部にstaticメソッド定義すんのかって話になる。継承も使えないし
コンストラクタが引数を取るような場合さらに面倒くせえしな

まあ、そもそもJavaっぽい書き方なんかするなよ、って言うのが多分正解だけどな
$tmp = new Hoge(); $tmp->fuga();でいいだろ
使いもしない一時変数が増えるのがキモいって気持ちは分かるが
■ このスレッドは過去ログ倉庫に格納されています