【PHP】下らねぇ質問はID出して書き込みやがれ 128
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/05/26(日) 23:01:58.78ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 127
http://kohada.2ch.net/test/read.cgi/php/1363698829/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0076nobodyさん
2013/05/30(木) 12:59:25.56ID:???オートロードってパフォーマンス的に駄目駄目じゃない?
OSのメモリ上にファイルのキャッシュが残ってればそうでもないのかな?
0077nobodyさん
2013/05/30(木) 13:09:24.65ID:???0081nobodyさん
2013/05/30(木) 20:34:40.45ID:???includeの可能性があるファイルが10個あるとして
全てロードだとコスト10固定、
autoloadにしているとコスト0〜10だと思うけど、
オートロードでダメな理由って何なの?
0082nobodyさん
2013/05/31(金) 03:30:57.93ID:0pyQKPZl本文の70%が半角の場合は投稿拒否をしたいです
半角判定の方法はわかったのですが
〜%で拒否の部分のコードをどう書けばいいのかわかりません
ヒントだけでもいいので助言ください
0083nobodyさん
2013/05/31(金) 03:39:27.57ID:???$hankaku = preg_replace('/[^\x{FF65}-\x{FF95}]/u', '', $src);
$lenOfHankaku = mb_strlen($hankaku);
$ratioOfHankaku = $lenOfHankaku / $lenOfOriginal;
0084nobodyさん
2013/05/31(金) 03:43:39.41ID:???0085nobodyさん
2013/05/31(金) 05:05:18.35ID:Vx9Hevlvよくわからないバグが生じております。
ブログにコメントを付けるものなのですが、endforeachが不正と表示されて、
処理が進まないエラーが生じました。
一応、書き加えたソースは以下のものです。
<ul>
<?php foreach ($post['Comment'] as $comment); ?>
<li><?php echo h($comment['body']) ?> by <?php echo h($comment['commenter']);?></li>
<?php endforeach; ?>
</ul>
エラーが生じるのは、この<?php endforeach; ?>です。
ただ、他のソースでも、この部分はきちんと処理が実行でき、それをコピッてきたので、
スペルミスの可能性は少ないかと思います。
何卒、お願いします。
0086nobodyさん
2013/05/31(金) 05:08:09.36ID:???0087nobodyさん
2013/05/31(金) 06:02:21.89ID:???モデルやコントローラーは普通のPHPクラスで書かれてる
0088nobodyさん
2013/05/31(金) 07:28:50.07ID:???たいしたスキルもなく教えることもできないがIDだけにはこだわって
言い続けてる。お前は自閉症児かw
>>79
こういうやつなw何が目的なのか答えろよ引きこもりニートが
まっとうな言動をしてるようでお前の方こそ人を不愉快にしてることに
気づかないのか?
ようつべのコメントでもまともなコメをしてるようで相手をただ単に攻めてるだけ
ってのよくあるけどまさにそんな感じだな
お前みたいに自分の言動が人にどう思われるのかわからないで好き勝手にやってる
ゴミは社会の迷惑だから早く北朝鮮の炭鉱へ行って
0090nobodyさん
2013/05/31(金) 09:52:51.73ID:Vx9Hevlvわかりました、ありがとうございます。
foreach():
〜〜
endforeach;
ですね。
0091nobodyさん
2013/05/31(金) 10:55:23.57ID:???言い回しはともかく、IDを表示するのがルールなんだから答える必要はないと思うよ。
君の言動?も相当人を不愉快にさせてると思うけどね。
009276
2013/05/31(金) 11:53:17.47ID:2B6R5nZc>>81
> オートロードでダメな理由って何なの?
一発でパスを確定できるファイル名でPHPファイルを置いているなら問題ないけど、
ロード候補ディレクトリが複数になる場合は、ファイルの存在チェックが必要になる。
そのオーバーヘッド分が馬鹿にならないんじゃないかと思った。
SPRに準拠したnamespaceを定義していて、きれいにPHPファイルを配置してるなら
問題ないけど。
009376
2013/05/31(金) 17:18:33.14ID:???一つのクラスをnewするだけのコードを、"ab -c 32 -n 10000"でrequire_onceとautoloadを比較。
PHP 5.4.10。APC有効。開発用Macで実行。
require_once版:
Requests per second: 8452.75 [#/sec] (mean)
Time per request: 3.786 [ms] (mean)
Time per request: 0.118 [ms] (mean, across all concurrent requests)
autoload版:
Requests per second: 6625.91 [#/sec] (mean)
Time per request: 4.830 [ms] (mean)
Time per request: 0.151 [ms] (mean, across all concurrent requests)
autoloadの方が20%程度くらい遅いけど、そこそこぬるい環境だったら問題ないのかな。
0094nobodyさん
2013/05/31(金) 17:31:36.61ID:???0095nobodyさん
2013/05/31(金) 17:43:27.30ID:???無駄なファイルの数 = N2
ファイルロードのコスト = L
オートローダによる1ファイルあたりのオーバーヘッド = A
(オートローダのファイルロードコスト = L+A)
とした場合のファイルロード全体のコスト C
通常のファイルロードコスト C1
C1 = (N1+N2) * L
オートローダ使用時のコスト C2
C2 = N1 * (L+A)
オートローダ使用時の差分 C2-C1
N1*A - N2*L
0096nobodyさん
2013/05/31(金) 17:44:32.16ID:???ファイルの存在チェックのほうがはるかにコストが低い場合が多いと思うけどな。
素で書き起こした機能限定のシステムじゃなければオートローダ使わない手はないと思うけど。
009776
2013/05/31(金) 17:56:07.06ID:???うーん、そもそもその「無駄なファイルの数」というのが何なのかわからないんだ。どういうこと?
ひょっとして、ロードする必要が無いファイルもrequireしてるってこと?
009876
2013/05/31(金) 18:04:22.71ID:???Foo.php:
<?php
class Foo {
public function hoge() { $o = new Bar(); }
public function fuga() { $o = new Baz(); }
Bar.php:
<?php
class Bar {}
Baz.php:
<?php
class Baz {}
index.php:
<?php
require_once 'Foo.php';
require_once 'Bar.php';
require_once 'Baz.php';
$o = new Foo();
$o->hoge();
としたとき、Baz.phpのロードがいらないってことか。
009995
2013/05/31(金) 18:04:47.74ID:???おかしい?
010076
2013/05/31(金) 18:09:16.63ID:2B6R5nZcケース1:Fooを使う人は内部のことなんかしったこっちゃないからFoo.phpでrequireしろ派
Foo.php:
<?php
require_once 'Bar.php';
require_once 'Baz.php';
ケース2:呼び出し側でやる派
index.php:
<?php
require_once 'Foo.php';
require_once 'Bar.php';
俺の場合は、最初はケース1派だったんだけど、理由は忘れたがケース2派になり、今はautoload派になった。
0101nobodyさん
2013/05/31(金) 18:13:00.31ID:2B6R5nZc0102nobodyさん
2013/05/31(金) 18:13:21.01ID:2B6R5nZcケース1しかありえない気がしてきた。
0103nobodyさん
2013/05/31(金) 18:25:19.05ID:???とはいえ、ファイル間の結合度や依存度によってケースバイケース。
たとえばフレームワークのルーティンにおいて bootstrap で基本ファイルを呼び出すっていうのはお決まりのパタン。
0104nobodyさん
2013/05/31(金) 18:27:37.83ID:???副次的な物だと思う。
確かに、autoloadはnewのエラーをフックしてファイルをロードするので、無駄なロードは発生しない。
しかし、数千req/secもあるようなシビアな場合ではないのであれば、autoloadあるいはrequire/includeが
一度に付きms未満の差しかないのだから、速度に関してはあまり気にする必要は無い。
クラス名やファイル名、ファイルの配置については、PSR-0に従うのが現状ではベストでは無いかと思う。
そうすれば、autoloadにも対応しやすい。
0105nobodyさん
2013/05/31(金) 18:28:37.70ID:???ラードフさんが仰ってたよ
0106nobodyさん
2013/05/31(金) 18:29:30.28ID:???0107nobodyさん
2013/05/31(金) 20:25:05.53ID:???SPRってよくしらないんだけど、これ?
https://github.com/alv-c/SPR---Simple-PHP-Router
0108nobodyさん
2013/05/31(金) 20:28:46.16ID:???0111nobodyさん
2013/05/31(金) 22:00:54.96ID:???今までrubyやpythonを使ったりしてましたが、
PHPは実に使いやすい
いちいち何をincludeして〜とか調べなくてもいいし、オブジェクト指向的にも問題ない
web以外にもPHP使うの最高じゃないですか?
なんでCLIではいまいち不人気なんでしょうか
みんなかっこつけてるんですか?
0112nobodyさん
2013/05/31(金) 22:08:35.93ID:???0113nobodyさん
2013/05/31(金) 22:38:24.89ID:TNUtMHtEそれにはファイルを読み直さないといけないですか?
ソースコード自体はメモリに載っているはずなので、
ファイルを読まなくても取得する方法があるような気もするのですが…
0114nobodyさん
2013/05/31(金) 23:14:39.26ID:???LinuxではPerlやPythonはデフォルトで使えることがほとんどだが、PHPはそうじゃないからじゃないかな。
あと、複数のバージョンを簡単に切り替える仕組みがない。
それに、CLIなのに/etc/php.iniを見に行くのがいけてない。
スレッドが使えないとか。
サーバアプリが書きにくいとか。
コマンドラインで使うときのライブラリが充実してないとか。
DB読むツール書くのは楽なんだけどね。
0117nobodyさん
2013/06/01(土) 00:07:19.59ID:???とかできるんだ。知らんかったわ。
0118nobodyさん
2013/06/01(土) 00:12:44.55ID:???どっちが使いやすいか明白じゃん。
まあpharがもっと流行れば、もう少しはCLIにも脚光が当たるかもだけど。
0120nobodyさん
2013/06/01(土) 00:18:32.89ID:???エディタでtag jumpするのはどうかな。
0121nobodyさん
2013/06/01(土) 00:27:44.17ID:???それに最初は Perl で書かれてたんでしょ? PHP自体
0123nobodyさん
2013/06/01(土) 01:47:06.51ID:???ラードフさんが、サイトの作成の際に perl だと余りにも面倒くさかったんで
自分のツールとして perl でライブラリを作ったのが最初だよ
0125nobodyさん
2013/06/01(土) 03:22:53.18ID:???http://manual.xwd.jp/history.html
0126nobodyさん
2013/06/01(土) 03:28:32.98ID:???http://php.net/manual/ja/history.php.php
0127nobodyさん
2013/06/01(土) 03:34:45.32ID:???最近のManualのHistoryでは、最初にPerlで記述したことは省かれてるけど(経緯はわからないけど)、少なくとも2006年までは「Perlスクリプトの単純な組み合わせでした」とされてるわけね。
何をムキになってるの?
0131nobodyさん
2013/06/01(土) 10:59:27.62ID:???昔はいたるところで目にしたような気がしたんだが、たしかに今はあまり見かけないな
今確認できたのは Wikipedia の PHPの項目の歴史のセクションにちょこっと書いてある程度だし、
しかもPHPと名付けられた時点では既に C で書きなおされているとされている。
そもそもが曲解していたのかもしれないし、もはや perl との関係はなかったことにする流れなのかもしれないな。
0132nobodyさん
2013/06/01(土) 15:32:17.20ID:Lm5yShvx0136nobodyさん
2013/06/01(土) 18:38:20.52ID:???0137nobodyさん
2013/06/01(土) 18:45:11.97ID:???意味が分からん。まさか、
class Parent {
static function hoge(){
// ここで Sub についてなにか知りたい
}
}
class Sub extends Parent {
}
ってことか?
0139nobodyさん
2013/06/01(土) 23:22:14.26ID:???abstract class AbstractClass
{
public static function getName() {
echo static::thisName();
}
}
class concrete extends AbstractClass
{
public static function thisName(){
return __CLASS__;
}
}
$foo = new concrete();
$foo->getName();
0140nobodyさん
2013/06/02(日) 14:29:22.81ID:ZugnqmP2基本的にissetで入っているかどうか判定しないと
送信されてない初期の場合にはエラーがでるものなのでしょうか?
勉強に使っているサンプルコードは特にPOSTデータのisset判定はしていません
特定の環境だけエラーができるものなのですか?
0142nobodyさん
2013/06/02(日) 14:36:07.32ID:ZugnqmP2ありがとうございます
判定するようにします
0143nobodyさん
2013/06/02(日) 15:48:58.82ID:3Klk3b6H/。/でsplitすると、。が消えてしまいます
「。」を「。|」など、句切り用文字付きに置換してから、
句切り用文字でsplitすると、望みの結果になると思いますが、
これを一度のsplitで行なう方法はありますか?
0144nobodyさん
2013/06/02(日) 15:53:09.15ID:???pre_match_allとか使えばいいんじゃない
0148nobodyさん
2013/06/02(日) 21:45:31.73ID:???0149nobodyさん
2013/06/03(月) 10:33:22.53ID:???幅固定で任意長のラベル印刷が出来れば良いので、
PDF等ほかの形式でも代替案あればご教授願いたいです。
0151nobodyさん
2013/06/03(月) 16:42:53.24ID:???0152nobodyさん
2013/06/03(月) 18:18:22.32ID:LfxiG17yやっぱ手続き型だよな。レガシーなプロは。
0153nobodyさん
2013/06/03(月) 18:21:04.59ID:???どうもスクリプト言語の変数スコープに慣れない
0154nobodyさん
2013/06/03(月) 18:51:24.33ID:???0155nobodyさん
2013/06/03(月) 19:07:36.25ID:???0157nobodyさん
2013/06/03(月) 19:14:17.76ID:???0159nobodyさん
2013/06/03(月) 19:25:21.85ID:???0160nobodyさん
2013/06/03(月) 23:49:58.72ID:R7T1Wl2xそのPHPのコードを「実行する」のではなく、
「アウトライン」を取得する機能はありませんか?
少なくとも満たしたいことは、任意のファイルに
どのようなクラスが記述されているのかを知ることです。
繰り返しになりますが、インクルードするのではなく、単にコードを解析するだけです。
具体的には例えば、"sample.php" というファイルに
<?php
class A {}
class B {}
/* class C{} */
などと記述されていた場合、
array('A', 'B')
などと取得できないかということです。
既存のライブラリなどがあればそれを使いたいので、教えて下さい。
なければ自分でパーサを書かなくてはなりません。
0161nobodyさん
2013/06/03(月) 23:52:48.18ID:???0163nobodyさん
2013/06/04(火) 00:08:53.85ID:???>>162で駄目なら、phpdocumentorの出力結果をパースするとか。
あるいはそのパーサ部分を切り出して使うとか。
0164nobodyさん
2013/06/04(火) 00:25:44.58ID:3OiDWMCaあくまでもPHPで使用するユティリティとして考えていますので
どうしてもPHPで実現したいのです。
それに、厳密なパーサがあればそれを使いたかったのです。
一からパーサを書いていたらとてつもなく大変なので。
>>163
ありがとうございます。
phpDocumentor の存在を恥ずかしながら知りませんでした。
私の求めている機能は十分に含まれているようですので、
これを使ってみたいと思います。
0165nobodyさん
2013/06/04(火) 02:53:15.94ID:3OiDWMCaより相応しい別のライブラリを見つけたので
それを使うことにしました。
phpDocumentor は Java でいうところの javadoc みたいなものですね。
これはこれで面白そうなので機会があれば使ってみます。
0166nobodyさん
2013/06/04(火) 02:59:32.85ID:???0167nobodyさん
2013/06/04(火) 03:14:23.78ID:3OiDWMCa想定しているファイルに実行可能なコードが記述されている場合、
同一の名前空間で衝突するクラス名、
パースエラーを発生させるコードなどを想定しているので、
Reflection は難しいと判断しましたが、
そのあたりは勉強不足なのでわかりません。
ひょっとしたら問題なかったのでしょうか?
0168nobodyさん
2013/06/04(火) 09:01:44.19ID:???0169nobodyさん
2013/06/04(火) 22:35:03.11ID:EWUXnsSE0170nobodyさん
2013/06/04(火) 22:58:08.92ID:???板違い ↓こっち行け
http://kohada.2ch.net/test/read.cgi/php/1353852365/l50
0171nobodyさん
2013/06/05(水) 15:10:20.43ID:???0173nobodyさん
2013/06/05(水) 17:50:40.81ID:???■ このスレッドは過去ログ倉庫に格納されています