【PHP】下らねぇ質問はID出して書き込みやがれ 82
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/03/09(月) 02:14:28ID:HyrthkeE過去スレ、関連スレ、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を表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0047nobodyさん
2009/03/10(火) 11:10:19ID:???0048nobodyさん
2009/03/10(火) 11:14:40ID:???class hello
{
function ko(){echo 'こ';return $this;}
function n(){echo 'ん';return $this;}
function ni(){echo 'に';return $this;}
function ti(){echo 'ち';return $this;}
function ha(){echo 'は';return $this;}
}
$obj= new hello();
$obj->ko()->n()->ni()->ti()->ha();
?>
0051nobodyさん
2009/03/10(火) 11:33:11ID:???0052nobodyさん
2009/03/10(火) 11:50:13ID:???0053nobodyさん
2009/03/10(火) 11:54:07ID:???class greeting{
function hello(){ return "こんにちは"; }
function goodevening(){ return "こんばんは"; }
}
class bibiru extends greeting{
function goodevening(){ return "こんばんみ"; }
}
class arare extends greeting{
function hello(){ return "んちゃ"; }
}
$bibiru = new bibiru();
echo $bibiru->hello()." ".$bibiru->goodevening()."<br>";
$arare = new arare();
echo $arare->hello()." ".$arare->goodevening()."<br>";
?>
0054nobodyさん
2009/03/10(火) 12:02:02ID:???class Hello {
static function main() {
echo "Hello world!";
}
}
Hello::main();
PHPはメインメソッドが存在しないからいちいち呼び出さないとだめ
純粋なオブジェクト指向言語じゃないので全てをオブジェクトで包む必要がない
よってPHPでHello worldを出力するだけなら
クラスを使うのは用途としておかしい
0055nobodyさん
2009/03/10(火) 12:06:59ID:???こんにちは こんばんみ
んちゃこんばんは
って表示されるのでおkですか?
0057nobodyさん
2009/03/10(火) 12:14:29ID:???インタフェースはどうした.デザパタはどうした.
0058nobodyさん
2009/03/10(火) 12:18:06ID:???http://pc11.2ch.net/test/read.cgi/php/1172205352/
0059nobodyさん
2009/03/10(火) 12:21:04ID:TmDav5cL$title = "タイトル";
$h1 = "見出し1";
$p = "文章です";
【template.html】
<html>
<head>
<title>{title}</title>
</head>
<body>
{h1}
{p}
</body>
テンプレート(template.html)を元に{title},{h1},{p}にdata.phpにためてあるデータを値を入れたいのですが
データの数は日々追加したり削除することも考えうるのですが
どのようにしたらいいでしょうか?
【求める結果】
<html>
<head>
<title>タイトル</title>
</head>
<body>
見出し1
文章です
</body>
0060nobodyさん
2009/03/10(火) 12:31:53ID:???0061nobodyさん
2009/03/10(火) 12:35:28ID:???0063nobodyさん
2009/03/10(火) 12:40:40ID:TmDav5cL勉強のために書きたいんです
0064nobodyさん
2009/03/10(火) 12:57:58ID:???function convert() {
include func_get_arg(1);
return preg_replace(
'/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/e',
'isset($$1) ? htmlspecialchars($$1, ENT_QUOTES) : \'undefined\';',
file_get_contents(func_get_arg(0)));
}
echo convert('template.html', 'data.php');
0065nobodyさん
2009/03/10(火) 12:59:19ID:???0066nobodyさん
2009/03/10(火) 13:02:43ID:???>>48 は単なるメソッドチェーンじゃない。
「流れるようなインターフェース」ってやつだよ。
キーワード引数のかわりに fluent interface (流れるようなインターフェース) を使う - kwatchの日記
http://d.hatena.ne.jp/kwatch/20080704/1215192591
0067nobodyさん
2009/03/10(火) 13:08:37ID:???0068nobodyさん
2009/03/10(火) 13:10:23ID:???0069nobodyさん
2009/03/10(火) 13:24:59ID:???$rows = Query.find_all('stocks', array('where'=>'price >= 1000',
'order_by'=>'name',
'limit'=>10));
これ本当に例?
0070nobodyさん
2009/03/10(火) 13:53:03ID:9aCbhHpkその基底クラスより前に拡張クラスを書くと
「クラスがない」というエラーが出るようになりました。
基底クラスの後ろに拡張クラスを移動するとエラーは消えましたが。
なぜ、ArrayAccessをimplementすると
こんなRubyやPhthonのような動作をするようになるのでしょうか?
0071nobodyさん
2009/03/10(火) 14:09:35ID:v2XXMSa6日本語で書いてくれ
基底クラスより先に拡張クラスを書けば、基底がないって言われるのはあたりまえ。
ArrayAccessをimplementしたなら、interfaceを実装すればいいだけ。
ArrayAccessがどうとかは関係ない。
0073nobodyさん
2009/03/10(火) 16:02:30ID:???1: class C extends B {} // 1: をコメントアウトすると動く
2: class B extends A {}
3: class A {}
コンパイル時、 C は未定義のクラス B を参照しているので解決を保留する
B もまた同様に保留され、A のみ定義した時点で終端に達しそのまま打ち切る
そして実行時に入って再度 C>B を解決しようとするが B が未定義のままなので Class 'B' not found になる
1: をコメントアウトした場合は、B は A しか参照していないので実行時に解決できエラーも出ない
ただ組み込みクラス、インターフェイスによって実行前解決が出来る出来ないの違いが出る理由は分からない
ソースを追いかけられる人に任せる
var_dump(class_exists('Klass', false)); // false
var_dump(interface_exists('IA', false)); // true
var_dump(interface_exists('IB', false)); // false
interface IA {} // 実行前に解決
eval('interface IB {}'); // 実行時に解決
class Klass implements IA, IB {} // 未解決の IB があるので実行時まで解決を遅らせる
var_dump(class_exists('Klass', false)); // true
var_dump(interface_exists('IA', false)); // true
var_dump(interface_exists('IB', false)); // true
0075nobodyさん
2009/03/10(火) 16:26:30ID:???それが不思議に思うのは、実装系以外におまいさんルールのほうが理想的とおもってるからじゃね?
普通に、実行時のロードされてるかどうかの違いでしかない > 組み込みも含めて。
007673
2009/03/10(火) 17:02:25ID:AQjjLY2m遅延評価の一例上げただけだ、説明が下手なら悪い
俺がソースを読まないと説明できないと言ってるのは次の挙動
// SPL組み込みクラス true true
var_dump(class_exists('ArrayObject', false), class_exists('XArrayObject', false));
class XArrayObject extends ArrayObject {}
// SPL組み込みインターフェイス true false
var_dump(interface_exists('ArrayAccess', false), interface_exists('XArrayAccess', false));
interface XArrayAccess extends ArrayAccess {}
あと>>70と俺は別人だからな、IDは出しとく
0078nobodyさん
2009/03/10(火) 17:13:24ID:???一応説明しとくか。
上のケース、
XArrayObjectはvar_dump評価時にすでにロードされてる。
下のケース
XArrayAccessはvar_dump評価時にロードされていない。
よって、そのような動作になっている。
007973
2009/03/10(火) 17:35:45ID:AQjjLY2m【OS名】 Windows XP SP3, FreeBSD 6.4
【PHPのバージョン】 5.2.9, 5.3-dev, 6.0-dev
【質問内容】
組み込みのクラスとインターフェースで、
定義済みになるタイミングに違いが出る理由もしくは原因を教えて下さい
ソースコードは>>76です
>>77,78のような観察日記な回答は要りません
008173
2009/03/10(火) 17:49:35ID:AQjjLY2m仕様ですね、ありがとうございます
0082nobodyさん
2009/03/10(火) 19:29:40ID:U6ySWdbJphpの掲示板を運営しているのですが、海外からの宣伝書き込みを阻止したいのですが、半角英数記号のみ書込禁止は↓の構文で大丈夫だったんですが、半角スペースが含まれると対応できません。。。
何か良い方法はありませんか?
if (preg_match(\"/^[!-~]+$/\", 変数名))
0084nobodyさん
2009/03/10(火) 20:30:26ID:???そっちの方が効率的だと思うよ
0086nobodyさん
2009/03/10(火) 20:38:17ID:???時代に取り残されるぜ
0087nobodyさん
2009/03/11(水) 15:51:06ID:???0088nobodyさん
2009/03/11(水) 16:49:42ID:???PHP側としてはどうしたらいいでしょうか?
同期ってレンタルサーバーの複数台プラントかは
勝手にやってくれるんですか?
0089nobodyさん
2009/03/11(水) 16:50:50ID:???0090nobodyさん
2009/03/11(水) 16:53:54ID:???0091nobodyさん
2009/03/11(水) 17:14:13ID:Txff9mTlphp学習2日目の名無しです
このスクリプトの意味を教えていただけませんか
0092nobodyさん
2009/03/11(水) 17:16:18ID:L2Yi36riif($a === 0){
echo "ok";
}else{
echo "";
}
で問題なく、okが出るのですが、
pdoで、$aをbindParamしたものを間に挟むと、elseしてしまいました
$a = 0;
・・・
$result->bindParam(":A",$a,PDO::PARAM_INT);
・・・
if($a === 0){
echo "ok";
}else{
echo "";
}
しかし、
$a == 0 とすればokでした。
原因は何なのでしょうかよろしくおねがいします
php5.2.6 OS windows
0095nobodyさん
2009/03/11(水) 17:27:49ID:Txff9mTl理解できました
ありがとう
0096nobodyさん
2009/03/11(水) 17:54:26ID:aBj2wILp以前に、他人の家から漏れている無線LANの電波を悪用して、殺人予告したヤツが捕まりましたが、ノートPCリカバリ→他人の電波で殺人予告→再リカバリとやればバレないような気がします。
厨房質問でお恥ずかしいですが、よろしくお願いします
0097nobodyさん
2009/03/11(水) 18:04:38ID:???0098nobodyさん
2009/03/11(水) 19:13:57ID:TxDdMOL9プラグインとしてまとめて、下のようにして読み込んでいます。
$plugin_name = "new_list.php";
define("PLUGIN_DIR",プラグインまでのパス);
if(file_exists(PLUGIN_DIR."/".$plugin_name)){
include PLUGIN_DIR."/".$plugin_name;
newList(); //プラグイン内の関数を実行
}
こうするとプラグインの数だけ毎回includeする事になるのですが
負荷がかからないか、後々めんどうなことにならないかと懸念しています。
自分では予測できないのですが、「こういうやり方だとこうなる」
というような指摘があれば、教えて下さい。
0100nobodyさん
2009/03/11(水) 20:05:36ID:???そういう時のためにinclude_onceとかrequire_onceという組み込み関数が用意されてるけど、負荷が高くなるのでお勧めしない
なのでプラグインがクラスで実装されているなら、ファイル名とクラス名を統一しておいて
$files = glob(PLUGIN_DIR .'/*.php');
foreach ($files as $file) {
if (!class_exists(pathinfo($file, PATHINFO_FILENAME))) require $file;
}
などとすればいいんじゃない?
0101nobodyさん
2009/03/11(水) 20:09:31ID:BrBOeywI【OS名】Windows XP
【PHPのバージョン】php4.4.9
【連携ソフトウェア】Apache2.0.63, MySQL Server 6.3
【質問内容】
pearを導入したく、go-pear.batを実行して試みたのですが、
Extracting installer..................
Using local package: PEAR.............ok
Using local package: Structures_Graph....ok
Preparing installer..................
Warning: fopen(XML/RPC.php): failed to open stream: No such file or directory in
C:\php\temp\PEAR\Remote.php on line 187
For this remote PEAR operation you need to load the xmlrpc extension or install
XML_RPC
続行するには何かキーを押してください . . .
というエラーが出てしまい、途中で止まってしまっているようです。
インストールされていないためにPEARコマンドも実行できません。
php.iniのinclude_pathにpearディレクトリへのパスや、extensions_dirなども
見直しましたが、他に何が悪いのかわからず困っております。
0102nobodyさん
2009/03/11(水) 20:16:34ID:???困っておりますじゃぁ、「そうですか」としか言えない気もするが、
めっちゃ親切な人がいれば答えてくれるのかもしれんけど。
それはそうと、PHP5にして試してみたら?
go-pearが古いのかもしれないよ。
0103101
2009/03/11(水) 20:34:19ID:BrBOeywI上記失敗の原因はphp.iniのphp_xmlrpc.dllがコメントアウトでした。
これを外し、必要となるiconv.dllをsystem32にコピーしてから試したところ、
PEAR_Remote (pear.php.net:80) : unexpected HTTP response
という別のエラーが出るようになりました。
こちらの対処法を調べてみることにします。
>>102
その通りですね、失礼しました。
以後、質問の意図を明確にするよう注意しようと思います。
0104認定回答者
2009/03/11(水) 20:39:09ID:nPJIwFx50105nobodyさん
2009/03/11(水) 21:01:13ID:???他の回答者を格付けできるほどの立派な頭脳をお持ちなら、何故そこで最適解をお示しにならないのでしょうか?
不思議で仕方がありません><
0106nobodyさん
2009/03/11(水) 21:18:55ID:???クライアントの方はJavaScript/VBScriptで、バイナリファイルをサーバー(PHP)へ
アップロードしたいのですが、どのようにすればいいでしょうか?
JavaScript は
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); //XMLHttpRequest();
xmlhttp.open('POST', 'http://hoge/recieve', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('formdata=123');
とすると、PHPの方で'123'は取れるのは確認しました.問題はバイナリで、
"ADODB.Stream"でバイナリファイルを str=Read(); strをBase64変換しようとするのですが
使っている変換用モジュールが駄目なのかもしれませんが、ここでこけてしまいます。
まずはBase64変換でポピュラーなやり方を説明しているサイトなどありませんでしょうか
お願いいたします。
0108nobodyさん
2009/03/11(水) 22:14:08ID:???<input type="file">はひとつひとつファイル選択しないといけないので、、、
0110nobodyさん
2009/03/11(水) 22:20:34ID:???/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`Д´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ >>108
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
0111nobodyさん
2009/03/11(水) 22:23:31ID:???/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`Д´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ >>109
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
011398
2009/03/11(水) 23:04:15ID:???こういうやり方、はじめて知りました!
ちょっとよく分からない関するとかありますが、調べてみます。
ありがとうございました。
0114nobodyさん
2009/03/11(水) 23:06:48ID:???サーバーを引っ越したらこういうような画像が表示ができなくなりました。
いろいろ試してみたところどうも引越し先のサーバーが上の表記のものを
画像として認識してないと思われます。
画像元は他サイトなのでいじれません。
どうすれば画像として認識してくれるのでしょうか?
accessで何かすればいいのかなとは思っていますがどう書けばよいでしょうか
ご教授お願いします。
0115nobodyさん
2009/03/11(水) 23:32:05ID:Co0l4rZT<?
header("Content-type: image/gif");
$url = "http://xxx.com/xxxx.php?sz=160x240&type=11";
readfile("{$url}");
?>
0116nobodyさん
2009/03/11(水) 23:47:01ID:???使用しているDBまた、どんなSQLを実行したか分からないけど、
bindParamは変数は参照としてバインドされるので、
メソッドの中でPDOドライバが何か余計なことをしたのかもしれないね。
bindParamの前後で、デバッガか、var_dumpで変数をチェックしてみては?
0118nobodyさん
2009/03/12(木) 00:11:31ID:???正規表現で複数回続く文字 。 を一回に置換したいです。
以下で試しましたがうまくいきません。
最長マッチ?のしかた教えて下さい。
mb_regex_encoding("sjis");
$text = "今日は木曜日です。。天気は晴れ。。。。";
$text = preg_replace("/。+/","。", $text);
0119nobodyさん
2009/03/12(木) 00:22:47ID:???preg_replace('/(。)+/', '。', '今日は木曜日です。。天気は晴れ。。。。');
で、できた。
括弧が必要な理由は分からん。
0120nobodyさん
2009/03/12(木) 00:23:56ID:???0122nobodyさん
2009/03/12(木) 01:21:32ID:???↓
みんなで開発するときは作業分担効率化
↓
フレームワークを使うのが当たり前
↓
ある程度自動でさくさくプログラム書けるらしい
↓
なんか自分でやった感がなさそうな気がしてモチベーション下がってきた・・・
まだ初心者すぎるし、ずっと手続き型でやるほうがいいのだろうか・・・
でも作業分担ですっきり綺麗にプログラムかけるのとか憧れるし、
そんなことができるなら今のうちにやっておいたほうがいいし、
でもプログラム自動生成とかになるらしい?からそれになれちゃうと、
今度は手続き型で覚えてきた基礎がおろそかになって忘れそうな部分が多そうで怖い・・・
一体どうしたら
0123nobodyさん
2009/03/12(木) 01:37:44ID:???問題を分けて考えるべきだ
0124nobodyさん
2009/03/12(木) 01:54:01ID:???0125nobodyさん
2009/03/12(木) 01:59:09ID:???後から見て、
おお〜これは見やすくて編集しやすいな〜
みたいに言われそうなの書いてみたい
0126nobodyさん
2009/03/12(木) 02:19:19ID:???・21世紀にもなってOOPができないエンジニアはゴミ
・OOPでないコードは、ひとりで書くコードでもゴミ
・「手続き型のコード」が何を指すか知らんが、PHPの文法はどのみち完璧にしないと何も出来ない
・個々のフレームワークの知識は要らん
MVC構造とは何かを頭に叩き込んでから、必要なものを自分で書け
OOP分かってない奴はクラス使っても糞コードしか書けないのと同じで、フレームワークを使おうが基礎が出来てない奴のコードはやっぱりクズだ
・ガタガタ抜かす前に動くコードを書けよハゲ
自動でサクサクできる?んじゃあやってみろよハゲ
手を動かさないエンジニアはゾウリムシ以下だ
0127nobodyさん
2009/03/12(木) 04:31:24ID:???補足
mb_regex_encoding()はmb_ereg*()にしか適用されないので
マルチバイト文字だと認識できていない事が原因
その例ならpreg_replace()ではなくmb_ereg_replace()を使う
0128nobodyさん
2009/03/12(木) 09:10:37ID:???0129nobodyさん
2009/03/12(木) 09:36:10ID:???成果上げるためにどう開発するのがいいか個別に考えればええやん
0130nobodyさん
2009/03/12(木) 09:55:01ID:???ちゃんと見極めたほうがいい
仕事になればたいした技術もおそわらず
FWとAPIの使い方を覚えさせられてラピッド開発させられるだけ
短期間で効率的に開発というのは業務では中核となる課題だが
結果ゆとりを多く生み出してる
0131nobodyさん
2009/03/12(木) 11:25:18ID:???トラックバック
書き込み(コメント、記事投稿)
ログ出力
0132nobodyさん
2009/03/12(木) 11:26:19ID:blHr3iRk0133108
2009/03/12(木) 11:41:37ID:???0134nobodyさん
2009/03/12(木) 11:46:49ID:???↓
0135nobodyさん
2009/03/12(木) 11:48:27ID:???0138nobodyさん
2009/03/12(木) 14:26:31ID:???0140nobodyさん
2009/03/12(木) 17:39:53ID:w9p/Xb/sどのような仕組みでしょうか?
0141nobodyさん
2009/03/12(木) 17:50:28ID:???0143nobodyさん
2009/03/12(木) 19:04:33ID:y65Mhsc8$array = array('a','b','c');
$str = pick($array,1);
↓
$array : array('a','c')
$str : 'b'
のような動作をさせたいです
0145nobodyさん
2009/03/12(木) 19:26:26ID:???0146nobodyさん
2009/03/12(木) 19:26:42ID:???list($str) = array_splice($array, 1, 1);
>>144
unsetは数値キーを再割り当てしない
■ このスレッドは過去ログ倉庫に格納されています