トップページphp
982コメント234KB

PHP総合雑談スレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/01/14(月) 21:35:11ID:???
PHP全体の雑談のようなスレがなかったからたてた
反省はしていない
0671nobodyさん2009/04/20(月) 08:07:56ID:???
知恵をお借りしたいです。

$str = '"aaa", 0, 2';
substr($str);

↑これを、
substr('"aaa", 0, 2');
ではなく
substr("aaa", 0, 2);
として認識させる方法はないのでしょうか?
型変換とか色々考えてみたけど思い付きませんでした。
0672nobodyさん2009/04/20(月) 08:55:32ID:???
eval
0673nobodyさん2009/04/20(月) 16:33:38ID:???
>>672
知りませんでした。ありがとうございます。
0674nobodyさん2009/04/20(月) 16:46:13ID:???
>>671-672
いただき
0675nobodyさん2009/04/20(月) 16:51:15ID:???
おいおいw
0676nobodyさん2009/04/20(月) 16:56:31ID:pbLy9Xug
えばるな。
0677nobodyさん2009/04/20(月) 22:55:11ID:???
そしてまた脆弱性のあるコードが生まれるのであった・・・
0678nobodyさん2009/04/20(月) 23:06:09ID:???
き、脆弱性(笑
0679nobodyさん2009/04/20(月) 23:41:19ID:???
なんでなんでもすぐevalで解決しようとするにゃん(´・ω・`)?

$str = '"abcde", 0, 2';

$arr = split(',', str_replace('"', '', $str));
substr($arr[0], $arr[1], $arr[2]);

さくっと分けてしまえばいいやん

むしろ
$str = "abcde";
$arg1 = 0;
$arg2 = 2;
substr($str, $arg1, $arg2);
最初から分けておくべきじゃね
0680nobodyさん2009/04/21(火) 00:31:48ID:???
ちょっと始めたらあれもこれもやりたくなってきりが無い
画像認証と確認メールで再認証てどっちがいいの?
0681nobodyさん2009/04/21(火) 00:55:01ID:HHvQ3yZ0
ここだった。

終わった・・・
今まで、MySQL(サンの傘下)で開発していたシステムが全て水の泡だ・・・

【速報】オラクルがサンを買収
http://headlines.yahoo.co.jp/hl?a=20090420-00000004-zdn_ait-sci
0682nobodyさん2009/04/21(火) 01:02:02ID:???
非リレーショナルDBMSの時代クルー!
こねえよバカ
なんだとメガトロン
0683nobodyさん2009/04/21(火) 01:22:35ID:???
ポスグレ時代到来
0684nobodyさん2009/04/21(火) 01:24:33ID:???
少し前にMysqlの開発者がSunからエクソダスってたけど、やっぱ知ってたんだろうな
0685nobodyさん2009/04/21(火) 01:51:52ID:???
ようやく話をまとめたのかって感じだな
とりあえずはOracle大勝利か
0686nobodyさん2009/04/21(火) 09:26:36ID:???
今まで定数の宣言に何も疑わず define を使ってたんですが、
軽く速度はかったら宣言するのも呼びだすのも時間かかってるようでした。

定数の宣言はどうするのがいいと思いますか?
0687nobodyさん2009/04/21(火) 10:35:44ID:???
コンパイル言語じゃない限り定数で速くなることはないと思っていいかと
0688nobodyさん2009/04/21(火) 11:05:06ID:2lbDKRu3
>>681
疎いからよくわかんないんだけど、これはMySQL終了のお知らせ?
0689nobodyさん2009/04/21(火) 13:28:13ID:???
まさか・・・Mysqlの資格試験もチケット制になり、お金をむしり取られるのですか?
0690nobodyさん2009/04/21(火) 14:13:29ID:???
PHPって変数を読み取り専用にロックって出来ないよな。
0691nobodyさん2009/04/21(火) 15:49:02ID:???
変更できない変数ってそりゃ定数じゃん
0692nobodyさん2009/04/21(火) 18:28:24ID:og7kptdR
>>690
どんなロックしたいのかにもよるな。

コードにベタ書き完璧に固定するのか(定数でおk)
最初に定義したら変更できないようにしたいのか
何らかの条件下で固定したいのか

操作者に変更されたくないのか
共同開発者に変更されたくないのか
自身のバグによる誤操作を防ぎたいのか
0693nobodyさん2009/04/21(火) 19:54:37ID:???
flock($hensuu,LOCK_EX)でできない?
0694nobodyさん2009/04/21(火) 20:17:06ID:???
なんと
0695nobodyさん2009/04/21(火) 20:28:23ID:???
天才現る
0696nobodyさん2009/04/21(火) 22:42:28ID:???
>>681
DBMSにべったりなコードなんて書くほうがわるいな。
DB関係なんて適当な汎用ライブラリ使っておいて交換可能にしとくのが基本。

まあ俺はDBなんて概念そのものが胡散臭いって気付いてたけどね。
昔からのグラマーならファイル読み書きアルゴリズムなんか自作が基本だし。
0697nobodyさん2009/04/21(火) 22:47:15ID:???
>691
一度代入したら再代入できない、という意味だと思う。Javaでいうfinal。
変える気の無い変数は、「これは変わらないよ」と宣言しておくわけ。
メリットは、コードの可読性が上がる事。最初の代入の箇所にだけ注意すれば中身を特定できるようになるからな。
あと、変えられたらマズい箇所が変えられなくなるので、安全になる、ってのもある。

で、結論は無理。
0698nobodyさん2009/04/21(火) 22:50:03ID:???
もう定数でいいじゃまいか
0699nobodyさん2009/04/21(火) 22:53:06ID:???
class hoge()
{
private $var;

public function __construct($var)
{
$this->var = $var;
}

public function getVar()
{
return $this->var;
}
}

こんなんで代用かのう。
0700nobodyさん2009/04/21(火) 22:59:33ID:???
クラスにするならマジックメソッドで全部フックして
書き換えられたらエラー吐くようにすればいいと覆う
0701nobodyさん2009/04/21(火) 23:00:36ID:???
あと宣言はデメリットもあるので途中で
0702nobodyさん2009/04/21(火) 23:02:28ID:???
途中で書き込んでしまった、、好きなときにFreezeできると汎用性が高いじゃないかな
0703nobodyさん2009/04/21(火) 23:18:48ID:HHvQ3yZ0
>>696
趣味のレベルなら、それもできるが、そこそこの規模の業務でやろうとすると、
DBに依存する部分は多くなる。特にパフォーマンスチューニングで。
まぁ、これだとMySQLで構築しているサイトはほとんど閉鎖に追い込まれるわ。
0704nobodyさん2009/04/21(火) 23:32:55ID:???
>>699
なんてSPL?w
0705nobodyさん2009/04/21(火) 23:35:04ID:???
オラのミドルウェアもどうなるかわからんな
0706nobodyさん2009/04/25(土) 23:15:03ID:qBHp4qP0
is_a()
変更履歴

バージョン 説明
5.3.0 この関数は非推奨ではなくなりました。そのため E_STRICT も発生しなくなりました。
5.0.0 この関数は非推奨となり、かわりに instanceof 演算子の使用が推奨されるようになりました。この関数をコールすると E_STRICT が発生します。

なにこれwww
0707nobodyさん2009/04/25(土) 23:20:29ID:???
そんな関数どういう時に使うんだ?
0708nobodyさん2009/04/25(土) 23:25:45ID:???
こんな時
http://www.youtube.com/watch?v=5jbtqlvxwZs
0709nobodyさん2009/04/26(日) 04:23:42ID:???
そういや、最近 is-a関係って言葉聞かなくなったな。
0710nobodyさん2009/04/26(日) 04:27:11ID:???
Javaが喧伝され始めたころのOOPの説明ってどうかしてたよな
必ず車がどうとかリンゴがどうって話から入ってぽかーん
0711nobodyさん2009/04/26(日) 04:32:34ID:???
>>710
OODだと今でもそんなんでしょ。
一応、OOとしては本質的だとおもうよ。

OOPと言いつつフレームワークの使い方にしかなってない現状の方が、ちょっとおかしい。
0712nobodyさん2009/04/26(日) 04:41:44ID:???
確かにモデリングとか上流なら直結してるけど、、プログラミングにはプログラミングの説明がされるようになったのは無用な混乱が無くていいのではと俺は思っている
0713nobodyさん2009/04/26(日) 05:18:59ID:???
ム板でOOネタだけで何十スレ消費したんだろうなw
0714nobodyさん2009/04/26(日) 11:25:27ID:???
>710
とりあえずPofEAAでも嫁。
フレームワークのコードは
・DBのテーブルと1:1対応にあるTable Module
・M-V-C構造を実現するService Layer
のために存在する。class カローラ extends 乗用車 の話はDomain Objectに基づく設計で使う。

Domain Objectの話がされないのは、抽象化レイヤーが一枚増えるのでコード量が増えるから。
強力な概念だが、webアプリの大半はそこまでの強力さを必要としない。
それと、問題領域(ドメイン)によってクラス構成が全く変わってくるので、フレームワークとして使い回せるコードが無いし、一般論もない。
0715nobodyさん2009/04/26(日) 12:19:39ID:???
こんな感じでフレームワーク勉強しただけで、OO語っちゃうのが嫌なんだよ。
0716nobodyさん2009/04/26(日) 12:22:52ID:???
変数と関数をたくさんつっこめる便利なものです。ぐらいの説明からすべきだったな。

ポリモーフィズムの説明で社長が、部長課長を呼んで・・・とか言ってたやつは○んで良いよ。
0717nobodyさん2009/04/26(日) 12:46:27ID:???
例で言ったら俺は車はあまり好きくないかな
メッセージのやり取りによる協調システムって雰囲気が出ないから

>>716
あと「これはポリモー(ryの説明だけどjavaには型の制約があって面倒なだけなんだからね!」って書いとくべきw
0718nobodyさん2009/04/26(日) 19:24:39ID:???
現代的な開発プロセスではOOは欠かせないお・・・
だが本質論では一行たりともコードは書けん・・・
コードが書けんと新人くんが使えるようにならん・・・
だからStrutsの本を2冊ほど与えて放置するお!

お前らの現場は大丈夫ですか?
0719nobodyさん2009/04/26(日) 19:28:34ID:???
欠かせないお、放置するお とかいう上司は消えてほしい
0720nobodyさん2009/04/26(日) 19:35:10ID:???
だからドカタ仕事ならフレームワークだけ覚えて使えばいいだけ。
ってかOOはモノの見方であって、技術とかじゃないし。
0721nobodyさん2009/04/26(日) 19:37:03ID:???
その見方も片面に過ぎんな。
0722nobodyさん2009/04/27(月) 08:16:54ID:???
OOは分析・設計よいツールだ。一部の名人芸ではなく共有可能なテクノロジーとして練られてきた認識の方法論

しかしそれはかなりマクロな話であって、例えばある言語でプリミティブな型がオブジェクトであったり制御構造がメソッドであるようなこととは断絶がある
ミクロにはOOとはコードパターンでありクラスリテラルであり、何よりselfだ
java以降OOが急激にややこしくなったのは、すべてマクロモデルからコードが導けると誤解したり、上で言われたドメインをごっちゃにしたり、自分が理解した一部だけを狂信する俄仕込みの人間が増えたせいもあるだろう

PHPでOOをやろうと思う人間と、RubyでOOをやろうという人間がいたら、言語の思想を反映して、両者の思い描くOOはかなり異なっているかもしれない
PHPのOOを学ぼうと思う場合、あまりOOの歴史などには触れずSPLなど見ながら実践的な知識を得ればそれでいいと思う
0723nobodyさん2009/04/29(水) 13:20:45ID:???
PHPって例外機構があるのに、標準関数とかのレベルでエラーがあっても例外投げるわけじゃないよね。なんか変。
0724nobodyさん2009/04/29(水) 13:24:53ID:???
そりゃ標準メソッドでないもん
0725nobodyさん2009/04/29(水) 14:39:12ID:???
必要なら自前で例外を投げるエラーハンドラを設定すればいいじゃない。
0726nobodyさん2009/04/29(水) 15:59:40ID:???
ろくなクラスライブラリがないからな。例外機構が役に立たない。
0727nobodyさん2009/04/29(水) 16:02:37ID:???
あるじゃんPEARなりZFなり
0728nobodyさん2009/04/29(水) 20:48:44ID:???
全部自分で例外投げるのも面倒なんだよね。
0729nobodyさん2009/04/29(水) 20:50:45ID:???
だから>>725だっつってんだろ
0730nobodyさん2009/04/29(水) 21:43:00ID:???
それが面倒でしょ。
既に稼働中のWebサイトではやりにくいし。
0731nobodyさん2009/04/29(水) 21:43:50ID:???
そりゃ最初からそうしなかったお前が悪い
0732nobodyさん2009/04/29(水) 22:02:15ID:???
最初はPHP4だったサイトもあるわけ。
0733nobodyさん2009/04/29(水) 22:08:52ID:???
未だに4なんか使ってんの?
0734nobodyさん2009/04/29(水) 22:18:17ID:???
新規に作るのは少なくても、既存のサイトはいくいらでもある、
0735nobodyさん2009/04/30(木) 03:58:41ID:???
じゃ自分が悪いな
0736nobodyさん2009/04/30(木) 08:21:54ID:???
メモリ不足を例外処理できるようにしてくれ。
0737nobodyさん2009/04/30(木) 10:18:52ID:???
post_max_size超えた場合の例外処理ってPHP側で出来る?
今はapacheのLimitRequestBody で制御してる
0738nobodyさん2009/04/30(木) 13:21:04ID:???
だいたいPHPカンファレンスでアンケート取って、3割の開発者はフレームワーク未経験なんだから、世間一般でのPHPの使われ方は想像以上に遙かにプア。
0739nobodyさん2009/04/30(木) 13:24:31ID:???
わざわざコストかけてフレームワーク使わなくても済むほど
言語構造が親切で関数・ライブラリが充実
0740nobodyさん2009/04/30(木) 13:29:03ID:???
>>738
もともとWeb向けにできてるし、フレームワークとか使わなくてもいいんじゃないの。

個人的にはパフォーマンスから考えて、SQLはページ、機能毎に作るべきだとも思ってるんで、
カプセル化によるモデル化とか本当にすべきなんかなぁとも思ってる。
0741nobodyさん2009/04/30(木) 14:33:11ID:???
PerlやRubyやPythonではFW未経験の割合は8割超えるんじゃないだろうか
PHP案件がすべてCMSがカバーするようなコミュニケーションやUGM重視のサイトの自前構築だと前提するのは無理があるんじゃないかなあ
0742nobodyさん2009/04/30(木) 14:54:15ID:???
>>737
ログを読むとかw
0743nobodyさん2009/05/01(金) 01:09:05ID:???
>>751に釣り針仕掛けておいた。
負けず嫌いの馬鹿が、すぐに食いつくから楽しみだ。
0744nobodyさん2009/05/01(金) 02:52:35ID:???
Shibuya.pmでアンケートを採ればウェブフレームワーク経験率は100%に近いと思う。
0745nobodyさん2009/05/01(金) 02:54:16ID:???
で?
っていう
0746nobodyさん2009/05/01(金) 15:28:38ID:???
date() と strftime() の違いがよくわからないのですが、
教えていただけないでしょうか?
0747マニュアルクン2009/05/01(金) 15:34:00ID:???
つマニュアル
0748nobodyさん2009/05/01(金) 15:44:30ID:???
お前は巣から出てくんなよ
0749マニュアルクン2009/05/01(金) 15:54:56ID:???
マニュアルに書いてありますよ^^
0750nobodyさん2009/05/01(金) 17:56:14ID:???
packで生成したバイナリ文字列をMySQLのテーブルに挿入して、
SELECTで取りだそうとしているのですが失敗していまいます。

文字列が代入されている変数を直接
INSERT INTO table_name (my_strings) VALUES ('" . mysql_real_escape_string($binary_strings) . "')
こんな感じで挿入して、SELECTも同様の記述をしています。

よければヒントをお願いします
0751nobodyさん2009/05/01(金) 21:29:51ID:???
失敗って?
0752nobodyさん2009/05/01(金) 22:06:09ID:???
BLOB型じゃないとか?
0753nobodyさん2009/05/01(金) 22:23:58ID:???
すみません。原因が分かりました。
COOKIEにから読み込んだ文字列をWHEREの条件にしていたのですが、
この文字列が希望通り取りだせていないことが原因でした。

UTF-8の文字コードならすべてCOOKIEで扱えると思っていたのですが、
特殊な文字コード(日本語環境では使わない文字コード)は、
COOKIEに格納できないのでしょうか…?
0754nobodyさん2009/05/02(土) 00:21:22ID:???
COOKIEから読み込んだ文字列は
セキュリティ上、危険なので
エスケープしないとだめよ
0755nobodyさん2009/05/02(土) 00:22:05ID:???
あとmagic_quotes_gpcがONの環境では、
クッキーの中に¥とかがあると勝手にエスケープする
0756nobodyさん2009/05/02(土) 01:26:26ID:???
magic_quotes_gpcをOffにしたら解決しました!
ありがとうございました。
0757nobodyさん2009/05/02(土) 01:27:09ID:???
おお。
漏れが適当に言ったアドバイスで
問題が解決してるwww
0758nobodyさん2009/05/02(土) 02:02:09ID:???
mysqli_multi_query() をコールした後で mysqli_query をコールしようとすると、
後の方が実行されないのですが、どうしてなのでしょうか・・・?
0759nobodyさん2009/05/02(土) 02:08:50ID:???
エラー出してみれば?
0760nobodyさん2009/05/02(土) 02:18:11ID:???
結果セットをすべてはき出さなければ、次のクエリは発行できないということでした。

mysqli_query()はmysqli_free_result()で解放できるのですが、
mysqli_multi_query()の結果を解放する方法がわかりませんでした。

お知恵をください。
0761nobodyさん2009/05/02(土) 02:20:37ID:???
普通に順次処理して全部開放するんじゃだめなの?multi_queryとか使ったことないけど
0762nobodyさん2009/05/02(土) 02:42:48ID:???
insertやupdateだけが目的のときなどに、
無意味なループで解放するのは気が引けてしまいます。
なにか良い方法はないものでしょうか…?
0763nobodyさん2009/05/02(土) 02:51:00ID:???
意図がよくわからんが実行したけど解法しないことがあるのはなんで?
0764nobodyさん2009/05/02(土) 08:13:20ID:???
よくわからんけどここ読んだ?
ttp://q.hatena.ne.jp/1168618057
0765nobodyさん2009/05/02(土) 08:18:45ID:???
雑談スレをサポセンにしてるのは誰だー
0766nobodyさん2009/05/08(金) 22:28:47ID:???
雑談じゃなくてすみません
サポートが終了してるCGI(PHP)でエラーが出るので
なにかわかる人がいたら教えてください
という質問のできるスレはありますか?
0767nobodyさん2009/05/09(土) 00:38:36ID:???
△▲ WebProg 初心者の質問 Part19 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1236265877/
07687662009/05/09(土) 09:29:42ID:???
>>767
ありがとうございます
そちらで質問してみます
0769nobodyさん2009/05/12(火) 09:35:22ID:E5yo7YEg
>>743
それのどこが釣り針?
0770nobodyさん2009/05/12(火) 10:30:49ID:???
マジレスすると自分で釣り針張ったと主張する人間はとっくに負けている
0771nobodyさん2009/05/13(水) 12:11:00ID:fUNIaPYN
MySQLに取り込んだ画像を、PHPで表示させることってできる?
Postgreなら知っているが
■ このスレッドは過去ログ倉庫に格納されています