■ このスレッドは過去ログ倉庫に格納されています
【PHP】下らねぇ質問はここに 9
- 1 :デフォルトの名無しさん :2017/12/20(水) 18:00:20.28 ID:1xaO/YRR0.net
- PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
http://mevius.5ch.net/test/read.cgi/tech/1489506082/
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 2 :デフォルトの名無しさん :2018/01/06(土) 23:13:46.81 ID:RuMnMvof0.net
- 関連リンク
■PHPマニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PHPNG https://wiki.php.net/phpng
■メーリングリスト http://ml.php.gr.jp/mailman/listinfo/
(以下英語)
■公式リポジトリ http://git.php.net/
■PHP-RFC https://wiki.php.net/rfc
■PECL http://pecl.php.net/
■Composer https://getcomposer.org/
■Packagist https://packagist.org/
■Zend Tech. Ltd. http://www.zend.com/
フレームワーク(一部)
■Zend Framework https://framework.zend.com/
■Symfony https://symfony.com/
■Laravel https://laravel.com/
■CodeIgniter https://codeigniter.com/
■Yii http://www.yiiframework.com/
■FuelPHP https://fuelphp.com/
■CakePHP https://cakephp.org/
テンプレートエンジン(一部)
■Twig https://twig.symfony.com/
■Blade https://laravel.com/docs/5.1/blade
- 3 :デフォルトの名無しさん :2018/01/08(月) 07:26:43.16 ID:4m/0uKGZa.net
- evernoteのENEXファイルをパースする処理を書いていますが
$str = '<?xml version="1.0" encoding="UTF-8"?>
<en-note><div>てすと</div><div>てすと</div></en-note>';
$xml = simplexml_load_string($str);
var_dump($xml);
とすると
object(SimpleXMLElement)#1 (1) {
["div"]=>
array(2) {
[0]=>
string(9) "てすと"
[1]=>
string(9) "てすと"
}
}
となり、en-note要素がどこかにいってしまいます
en-noteを取り出してasXML()したいのですが、
何故かsimplexmlオブジェクトの中にありません
en-noteという名前が悪いのかと思ってdivとかhとかにしてみましたが
それでも一番外側の要素はsimplexmlオブジェクトに入っていません
何故こうなるのでしょうか?
- 4 :デフォルトの名無しさん :2018/01/08(月) 13:03:30.26 ID:4m/0uKGZa.net
- >>3
これ消えているのではなくて、
一番外側のオブジェクトがまさにそれですね?
xmlタグが一番外側の要素で、
その次のタグがその子要素になると思い込んでいました
- 5 :デフォルトの名無しさん :2018/01/08(月) 21:13:59.71 ID:rpNlU31Ua.net
- shell_execなどは、mod_phpから実行した時には
何か制限を受けるのでしょうか?
echo shell_exec('"C:/Program Files (x86)/Evernote/Evernote/ENScript.exe" exportNotes /q "ほにゃらら"');
これでevernoteのノートを出力出来るはずなのですが
mod_phpから呼び出した時には何も表示されません
コマンドラインから呼び出すと普通に表示されます
echo shell_exec('cd')
のように単純なコマンドで試すと、mod_phpでも問題なく実行されています
メモリ制限の問題かと思ってmemory_limitを-1にしても何も変わりません
- 6 :デフォルトの名無しさん :2018/01/09(火) 09:34:45.35 ID:SyBlvM9La.net
- >>5についてですが
外部実行ファイルはドキュメントルート下に置かないと実行できないみたいな情報があったので
ENScript.exeを呼び出すバッチファイルをドキュメントルートに置いて実行してみましたが駄目でした
mod_phpからwhoamiを実行すると
nt authority\systemという権限で動いていることが分かりました
この権限が制限を実現しているのでしょうか?
- 7 :デフォルトの名無しさん :2018/01/09(火) 09:41:14.36 ID:SyBlvM9La.net
- また、セーフモードではありません
外部プログラムの制限についてドキュメントに書いていないのが解せません…
Windows版だけの現象なのでしょうか
- 8 :デフォルトの名無しさん :2018/01/09(火) 10:04:52.25 ID:lcs1dgGe0.net
- Evernoteとか使ったことないから知らんけど, その実行者の権限で見える, 見えてよい或いは見えるべきものを扱ってんの?
- 9 :デフォルトの名無しさん :2018/01/09(火) 10:13:18.61 ID:SyBlvM9La.net
- Evernoteは非常に個人的なものなので、
確かにウェブサーバからデータが見えたらどうなのかっていうのはありますね
自分用アプリを作るためにApacheとブラウザを使っていましたが
本来ウェブサーバはネットに公開するためのものなので
権限が低くされるのも当然といえば当然。
そう考えるとウェブサーバを使ったアプリ構築を脱却して
Electronとかを使って作った方がいいですね
ありがとうございました
- 10 :デフォルトの名無しさん :2018/01/10(水) 13:35:01.59 ID:70pYzGse0.net
- include先での$_POSTの参照について質問です。
index.html(httpd.confいじってhtmlファイルでもphp使えるようにしてる)からfile1.phpをincludeし、file1.phpの中でfile2.phpをincludeしています。(処理の関係上そうしたい)
index.htmlにPOSTがあった場合に、file1.phpでは$_POSTを参照出来るのですが、file2.phpからは何故か出来ません。
index.htmlで直接file2.phpをincludeするとPOSTの参照は出来ます。
そこら辺のルールに詳しい方いましたら解説していただけないでしょうか。よろしくお願いします。
- 11 :デフォルトの名無しさん :2018/01/13(土) 10:49:54.90 ID:By98rTnD0.net
- $_POSTに上書きしちゃってる可能性
- 12 :デフォルトの名無しさん :2018/01/20(土) 00:15:59.55 ID:MzOH7w6y0.net
- ドがつく素人です。
しょーもない質問ですいません。
【困りごと】
ドキュメントルートにphpinfo関数を実行するファイルを作成したが、
ブラウザ上でうまく表示されない。(スクリプトの記述のまま表示されてしまう)
【状況】
ApacheとPHPをインストールしたんですが、
以下URLのようにphpinfoコマンドで記述したphpを、
ドキュメントルートに入れて、http://localhost/phpinfo.phpで
実行したのですが、
<?php
phpinfo();
?>
と、スクリプトの記述そのまま表示されてしまいます。
何か設定ミスだとは思うのですが、なかなか原因が分からず・・・・
【URL】
https://i-bitzedge.com/php/how-to-use-phpinfo
- 13 :デフォルトの名無しさん :2018/01/20(土) 01:00:58.30 ID:6KDbA8qD0.net
- XAMPPじゃなくてApacheとPHPを個別に手でインストールしたのか?
手でインストールするならApache側の設定を修正してPHP用モジュールをロードする必要があるぞ
何か今になってもXAMPPやらApacheやらの導入を最初にやらせるサイト結構あるけど, きちんとしたWebサーバが本当に必要になるまではPHPのビルトインサーバが楽でいいよ
http://php.net/manual/ja/features.commandline.webserver.php
- 14 :デフォルトの名無しさん :2018/01/20(土) 01:12:47.90 ID:6q5j1Hcg0.net
- >>5-9
その書き方で、notepad は、起動できるのか?
もし起動できるのなら、ENScript.exe に与える引数がおかしいのかも
- 15 :デフォルトの名無しさん :2018/01/20(土) 01:32:09.29 ID:bSTKludV0.net
- >>12
ちな俺はXAMPP/Windowsで使っているけど、最初からPHPは使えた。
(もちろん13の言うとおり、最初から設定してあるという意味で)
一般論になるが、環境の立ち上げはずぶの素人だと辛い。
(はまった場合に回避できない)
だから13の言っていることは正しくて、知らないのならまずはお手軽環境でやったほうがいい。
XAMPPも十分お手軽だし俺はいいと思うけどね。
最初からガチ鯖で、というのも一理あるのだが、それは後付けの意見でしかないことも多い。
- 16 :デフォルトの名無しさん :2018/01/20(土) 10:53:53.90 ID:bpfiGwqM0.net
- 初めてc#でプログラミング始めたんですが、
Visual studioを使ってると頻繁に行末に移動する「end」やカーソルキーを使いたくなるけど、
ショートカットってないんでしょうか?
nemacsとかだとctrl+eとかで行末に移動してくれたようなおぼろげな記憶があるんですけど。
- 17 :デフォルトの名無しさん :2018/01/20(土) 10:54:20.52 ID:bpfiGwqM0.net
- ほんとくだらない質問ですいません。
ググったけどショートカット見つからなかったもので。
- 18 :デフォルトの名無しさん :2018/01/20(土) 17:11:45.97 ID:tLgBkvHga.net
- スレタイ読めねぇほどバカなのか
- 19 :デフォルトの名無しさん :2018/01/22(月) 17:07:06.70 ID:YXQIUh040.net
- >>12
AddHandler とかFilesMatch とかが
コメントになってるだろう
AddHandlerはファイルを特定する方法が甘いから使い方注意だが
- 20 :デフォルトの名無しさん :2018/01/26(金) 16:45:32.90 ID:aV9eTo+Y0.net
- よくあるファイルアップロードフォームと受け取り側PHPの構成なんですが、
アップロードされたファイル名がマルチバイトだと文字化け・・・というより、「あ.txt」なら「あ.txt」
となってしまいます。
Windows + XAMPP 環境ですが、
mb_convert_encoding($uploadfile, "SJIS", "auto");
や
mb_convert_encoding($uploadfile, "CP932", "auto");
を行っても結果は変わりません。
何かチェックすべき項目を見落としていると思うのですが、お助け下さい。
- 21 :デフォルトの名無しさん :2018/01/26(金) 16:47:17.43 ID:aV9eTo+Y0.net
- おうふ
「あ.txt」が「&#12354;.txt」(半角)となります。
- 22 :デフォルトの名無しさん :2018/01/26(金) 17:20:40.16 ID:aV9eTo+Y0.net
- 自己解決しました。
これでいけますね。
mb_convert_encoding($uploadfile, "SJIS", "HTML-ENTITIES");
ところで、これって環境によって不要だったりするのですか?
- 23 :デフォルトの名無しさん :2018/01/27(土) 15:17:32.64 ID:MzrwFkn+0.net
- $a = [
[1, 5],
[9, 1],
[8, 2],
[1, 2],
];
みたいに宣言しているところがあって、これの2個目と3個目を変数で宣言したいわけよ
$a = [
[1, 5],
$b,
[1, 2],
];
みたいに。
この時 $b にはどういう入れ方すれば最初の形を再現してくれます?
- 24 :デフォルトの名無しさん :2018/01/27(土) 16:01:09.58 ID:kseb+5Eha.net
- 無理じゃね
- 25 :デフォルトの名無しさん :2018/01/27(土) 17:00:21.87 ID:MzrwFkn+0.net
- やはりか
$b = [
[9, 1],
[8, 2],
];
にしちゃうと形変わっちゃうよな?
- 26 :デフォルトの名無しさん :2018/01/27(土) 17:16:07.80 ID:mUh+GRjL0.net
- array_merge使うのがいいと思うが
- 27 :デフォルトの名無しさん :2018/01/31(水) 21:00:18.89 ID:68O1HbzJ0.net
- Docコメントはツール使って書いてますか?
それとも使わず書いてますか?(*´ڡ`●)
- 28 :デフォルトの名無しさん :2018/02/02(金) 20:59:07.10 ID:angTjduf0.net
- 忘れてください(`・ω・´)ゞ
- 29 :デフォルトの名無しさん :2018/02/03(土) 19:45:51.02 ID:bLLjGwhG0.net
- 画像アップロードする時に、1つのフォルダにアップロードするのではなく、
/年/月/ファイル名
とわける方法があります。(WordPressとか)
しかしこの場合、ファイルを編集(入れ替える)時に以下の処理が必要になります。
1:編集するファイルの登録日を取得
2:1のフォルダ内にファイルが存在するか確認
3:存在していたら削除する
4:更新日のフォルダを作成
5:4のフォルダにファイルをアップロード
この処理を行うと「登録日のフォルダにファイルがひとつも存在しない」
と言った可能性があり、空フォルダになります。
空のままにしたくない場合は
{他にファイルが存在しない場合はフォルダごと削除}
と言った処理も必要になります。
ファイルをDBで管理している場合は、何度もクエリーを投げる必要があり、
無駄が多い気がするのですが、いかがでしょうか?
- 30 :デフォルトの名無しさん :2018/02/03(土) 22:08:01.43 ID:uf1OevP30.net
- >>29
ファイル操作はDB更新とは別に出来るだろう
PHP単独でファイル存在チェック、削除、DIR操作、アップロードやって
DBは必要な事だけすれば良いんじゃないの?
- 31 :デフォルトの名無しさん :2018/02/03(土) 22:11:48.87 ID:w5tgMa2Q0.net
- Readに対してWriteの回数は極めて少ないと思えば大した問題ではないのでは
- 32 :デフォルトの名無しさん :2018/02/04(日) 00:58:09.63 ID:e+yYqllI0.net
- >>30-31
ご意見ありがとうございます。
WordPressとか他のCMSを見たのですが、
一度登録した画像を編集(作り直す)のは止めようと思います。
無駄が多いですし、ファイル操作で入れ替えるみたいな処理もおかしい気がして。
入れ替えるなら一旦削除してアップロードし直すのが通常だと思いますし
- 33 :デフォルトの名無しさん :2018/02/07(水) 20:59:50.48 ID:MJqvUrQe0.net
- 例えば↓みたいなループがあったとして、<br>
error_logがなかったら0.001秒で処理が終わって、
ある場合は5秒くらいかかるんだけど、error_logって結構コストの掛かる処理なん?
for ($i = 0; $i < 100000; $i++) {
error_log("hoge");
}
ちなみに手元の環境はPHP7.2.0
- 34 :デフォルトの名無しさん :2018/02/08(木) 12:29:07.56 ID:E75692Mg0.net
- ログを実際にコンソールに出してるなら
その分遅くなる、もし出してるならファイルにリダイレクトしてみ
- 35 :デフォルトの名無しさん :2018/02/09(金) 21:42:53.67 ID:DI5fWWyV0.net
- すいません。
mysqliで接続されません。
dbサーバーとwebサーバーは同一です。
ワードプレスを導入しているのですが、そちらはインストールされて記事等もdbに入って更新も出来ます。
phpadminも入りました。
ただそれ以外のページからだと接続すらできてないです。(接続を行うとエラーも出ない上、phpが空白で表示される。echo等も死ぬ)
何か考えられる原因等ありますか?phpの権限とかですか?
- 36 :デフォルトの名無しさん :2018/02/10(土) 00:18:04.71 ID:Yu/cvnD90.net
- 自己解決しました
- 37 :デフォルトの名無しさん :2018/02/13(火) 11:26:59.19 ID:2Q2AHgA2d.net
- 質問させてください。
JWTを使いたいです。
HTTPでリクエストして、レスポンスとしてJSON形式のテキストを受け取る際の署名にJWTを用いたいです。
JSONに電子署名をして、URL-safeな文字列にする手順の規約、と言うのは分かりましたが具体的にはどうすればそうなるのか分かりません。
署名する処理は JwtHS256Encodeメソッド でやりたいです。
hash_hmac()は使ったことがあります。
具体的なソースコードなど提示してくれるとありがたいです。
とんちんかんなことを言っていたらすみません。
よろしくお願いします。
- 38 :デフォルトの名無しさん :2018/02/13(火) 12:03:56.31 ID:cOH/iFjL0.net
- ほい
https://packagist.org/packages/firebase/php-jwt
- 39 :デフォルトの名無しさん :2018/02/13(火) 12:49:59.79 ID:2Q2AHgA2d.net
- >>38
ありがとうございます!
まだ試してないんですが、軽く目を通したところdownloadの文字があるので何かしらのファイルをダウンロードしてどっかのディレクトリに置いておいてその都度呼び出して使う、みたいな感じのものなんですかね?
とりあえず一回色々やってみます!
- 40 :デフォルトの名無しさん :2018/02/13(火) 13:20:46.69 ID:rrx74NIBa.net
- >>39
とりあえずcomposerでググれ
- 41 :37 :2018/02/14(水) 21:58:29.96 ID:TtACcl/J0.net
- 簡単ではありますが報告を。
composer使ってphp-jwtインスコして>>38のサンプルにrequire_onceでjwt.php指定して
でecho $jwtしてやったら暗号的な英数字がだだーっと出たので使い方はわかった気がしてます。
- 42 :デフォルトの名無しさん :2018/02/14(水) 22:25:21.84 ID:X6WT15xX0.net
- composer使うならvendor/autoload.phpをrequireすればよかろう
- 43 :デフォルトの名無しさん :2018/02/16(金) 06:19:14.89 ID:W1XJdyx10.net
- ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
- 44 :デフォルトの名無しさん :2018/02/22(木) 22:26:42.20 ID:JaCEqDtL0.net
- switch-case文について質問です。
通常こういった条件式は自分で書いていくと思うのですが、このcaseリストを
ここより前に定義して動的にcaseを増やしていくことは可能でしょうか?
switch ($i) {
case "A";
break;
case "B;"
break;
…
}の
caseを一か所に記述して(A,B,C,D,…)と後から編集したらcaseの部分も動的に記述されたことになる
というのは可能ですか?ということです
なんと表現したらいいかわからないのでわかりにくいと思うのですが、
わかるかたおられましたらご教授ください。
- 45 :デフォルトの名無しさん :2018/02/23(金) 00:16:33.70 ID:heeL5/0a0.net
- 何でそんなことが可能だと思ったのかご説明頂けるかな?
何がしたいのか分からんけどエスパーするとそういうことはState/Strategyパターン使ったらええんちゃう
- 46 :デフォルトの名無しさん :2018/02/23(金) 00:42:42.74 ID:kCRA+Aya0.net
- エディタなり開発するフレームワーク側で補完してくれるかと聞いているのかな
- 47 :デフォルトの名無しさん :2018/02/23(金) 00:46:17.66 ID:Hlk4jzyw0.net
- >>45
Java鹿は死ねよ。欠陥言語使っているからそんな発想しか出来なくなる。
>>44
それは関数ポインタをハッシュに入れてcaseのところで引くんだよ。
- 48 :デフォルトの名無しさん :2018/02/23(金) 21:22:58.57 ID:859K0GLT0.net
- >>47
うまいことできましたありがとうございます!
>>45
なんでそんなことが不可能だと思ったのか
ご教授頂けるかな?
- 49 :デフォルトの名無しさん :2018/02/24(土) 15:35:12.76 ID:YXQeh0ci0.net
- cakephp3.5を使ってるんですが、
フォルダ名はsrcなのに
namespaceやuseの指定はappなのはなぜですか?
- 50 :デフォルトの名無しさん :2018/02/25(日) 14:13:11.68 ID:bGLkxUMu0.net
- >>49
https://github.com/cakephp/app/blob/master/composer.json#L29
- 51 :デフォルトの名無しさん :2018/03/02(金) 12:53:23.46 ID:YTlkYdzxM.net
- /zzz/a.php
/xxx/b.php
のように
a.php , b.php を別々のフォルダに用意して
b.phpでrequire (a.php)した時にb.phpのあるフォルダ名xxxを返すには
a.phpになんと記述すればいいですか?
- 52 :デフォルトの名無しさん :2018/03/02(金) 13:05:46.96 ID:pRJ4HJDk0.net
- >>51
とりあえず
print_r(debug_backtrace());
って書いてみ
>b.phpでrequire (a.php)した時にb.phpのあるフォルダ名xxxを返す
この考え方自体が間違ってる気がするので
もっと前の段階の「結局何がしたいのか?」を書いた方がいいかもな
- 53 :デフォルトの名無しさん :2018/03/02(金) 13:44:06.10 ID:mIGjbFX+0.net
- a は、b からrequire されるので、b はa の場所を知っているけど、
aは、どのファイルからrequireされるのか、あらかじめ分からないはずだから、
aからbの場所は、わからないはず
- 54 :デフォルトの名無しさん :2018/03/02(金) 14:16:46.22 ID:pRJ4HJDk0.net
- debug_backtrace()を勧めてるぐらいだから
さすがそれぐらいは分かってるw
aからbの場所が知りたい時(requireしたファイルのパスが知りたい時)
ってじゃぁどんな時よ?って話を俺はしてる
autoloadとか使えば済む話なんじゃないかと思ったもんでね
- 55 :デフォルトの名無しさん :2018/03/02(金) 14:54:30.21 ID:d+rY3YvF0.net
- >>52-54
どんな時というかやりたい操作は、
b.phpがあるフォルダ名をDB名にしていて、
a.phpには接続先のDBに対する処理を書いていたので
b.phpがあるフォルダによって動的にa.phpの処理をする、です。
debug_backtrace()で値が返ってこず
色々試していたら
$watgame = $_SERVER['SCRIPT_NAME'];
$watgame = explode("/",$watgame,-1);
$watgame = $watgame[2];
で取得できました。お騒がせしてすいませんでした。
- 56 :デフォルトの名無しさん :2018/03/02(金) 15:47:35.06 ID:pRJ4HJDk0.net
- >>55
なるほど
dirname(__FILE__);
をオススメしとく
- 57 :デフォルトの名無しさん :2018/03/04(日) 22:44:50.40 ID:85QkEt6wM.net
- 配列にしたhtmlを一つつなぎで
出力するのって
$output= implode("", $html);
ってするのが普通ですか?
他にいい方法ありますか?
- 58 :デフォルトの名無しさん :2018/03/04(日) 22:48:34.40 ID:NLYmVhvS0.net
- 出力したいだけなら普通にforeachでいいんじゃないの
- 59 :デフォルトの名無しさん :2018/03/04(日) 23:25:14.60 ID:85QkEt6wM.net
- >>58
ありがとうございます。
とりあえず変数に1つつなぎにしておいとく場合なら
上記のようにimplodeでつなぐという認識で間違いないでしょうか?
- 60 :デフォルトの名無しさん :2018/03/05(月) 01:51:51.73 ID:aQjnc2cVa.net
- 自由でいんじゃね
- 61 :デフォルトの名無しさん :2018/03/06(火) 09:19:42.58 ID:Ejp9PzXia.net
- >>59
どんな感じでhtmlが入ってるかによるけど
出力するときに配列の中にあるやつをエスケープしたりhtmlspecialchars
したり変数を展開したりするんだったらforeachとかあたりの方がいいんじゃね?
テンプレートエンジン使ったほうがいいかもしらんが
- 62 :デフォルトの名無しさん :2018/03/06(火) 13:23:07.10 ID:HCeE6DOL0.net
- 配列を順に出力するだけならforeach
配列をくっつけて別の変数にしたいならimplode
implodeしたあとに何かをするわけでないなら
おとなしくforeachで出力すべき
- 63 :デフォルトの名無しさん :2018/03/06(火) 23:15:13.68 ID:1vXAI1T90.net
- phpを7から5にインストールしなおして
php.info()を表示させようとしたんですが
PHP Fatal error: Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
というエラーが出ます
どこがまずいんでしょうか?
OSはubuntu16です
- 64 :デフォルトの名無しさん :2018/03/07(水) 11:19:38.20 ID:DyyIOy9m0.net
- >>63
'var/www/html/index.php'
をrequireしようとしたけど
そんなファイルはないぞというエラー
とりあえず
<php
書いてるまんまなので
これを読んで意味が理解できないようではこの先苦労するかも
- 65 :デフォルトの名無しさん :2018/03/07(水) 11:20:30.40 ID:DyyIOy9m0.net
- 変なタイミングで送信してすまない
とりあえず
<php
phpinfo();
とだけ書いた適当なファイルを1個用意して
それを表示してみればいい
- 66 :デフォルトの名無しさん :2018/03/07(水) 15:05:17.25 ID:nuhunf1G0.net
- <?php
- 67 :デフォルトの名無しさん :2018/03/08(木) 00:53:30.35 ID:Niz7TFw70.net
- >>65
ありがとうございます
やってみたけどブラウザが真っ白なままでした
permissionも755にしてます
- 68 :デフォルトの名無しさん :2018/03/09(金) 00:42:10.02 ID:lzIhgFgZ0.net
- PHP7で関数の戻り値を指定できるようになったので、
function test(int $i) :int {
if ($i != 1) {
return false;
}
return $i;
}
上記のような関数の場合、戻り値の型が複数あるためfalseの際にエラーになるかと思います。
PHP5時代では上記のようなコードを書くことができましたが、
今後(PHP7以降)では推奨されないようになっていくのでしょうか?
また今まではif文で判定してダメならfalseを返すという関数をよく書いていたのですが、
今後上記のようなコードは避けるべきなのでしょうか?
- 69 :デフォルトの名無しさん :2018/03/09(金) 03:00:34.50 ID:ciB3VK7a0.net
- mixedを指定できるようにする案は提案されてるけど話し合いの段階に至ってない
ビルトイン関数がmixed返すならしょうがないけど
ユーザ定義関数なら7.1から使える?intでNULL許容してint or NULL返すのも考慮してみては
7.2からはobjectも返せるからオブジェクトで包めばどうにでもなるけど
- 70 :デフォルトの名無しさん :2018/03/09(金) 03:05:38.98 ID:ftPGZsCIa.net
- なんやこの糞コード…
- 71 :デフォルトの名無しさん :2018/03/09(金) 09:33:46.53 ID:lzIhgFgZ0.net
- >>69
ありがとうございます。
?intで実装してみます。
>>70
クソコードというのは返り値がint or booleanになっているからでしょうか?
- 72 :デフォルトの名無しさん :2018/03/09(金) 11:13:14.90 ID:oMbBFiMDa.net
- >>71
>>70ではないがいくら動的型付け言語とはいえ、戻り値の型が違うのはあまりお行儀がよろしくないと思う
- 73 :デフォルトの名無しさん :2018/03/09(金) 11:21:10.75 ID:2KAyapC60.net
- 完全に同意するんだけどPHPの標準関数がそうなってるから何も言えねぇ
- 74 :デフォルトの名無しさん :2018/03/10(土) 17:49:48.91 ID:g4l3jXG40.net
- phpでcookieみたいにlocalstorage扱うことできますか?
- 75 :デフォルトの名無しさん :2018/03/10(土) 18:03:05.47 ID:zHYllTGn0.net
- localStorageってクライアントサイド実装だと思ってたんだけど俺の理解が間違ってたかな
- 76 :デフォルトの名無しさん :2018/03/10(土) 18:10:47.87 ID:g4l3jXG40.net
- cookieもクライアントサイドだから
同じように扱えないかなと思ったのですが
違うのでしょうか?
トンチンカンなこと言ってたらすいません
- 77 :デフォルトの名無しさん :2018/03/10(土) 19:20:34.01 ID:NQUwT7o+0.net
- localStorageAPIをPHPで実装すれば可能だろうけど
そのような実装があるかは知らないな
Cookieのように仕様が単純なら簡単に実装できるだろうけど
でもそれをPHPでやる意味は・・・?
DB使ったりJSONやシリアライズ使ったり他の方法をとるべきだと思うね
- 78 :デフォルトの名無しさん :2018/03/10(土) 19:43:13.33 ID:g4l3jXG40.net
- jQueryやjavascriptが切り貼りで動かせる程度の知識しかなく
PHPとmySQLなら色々と慣れていてやりやすいので
なんとかならないかなと思った次第です
色々と調べて他の方法探してみます
ありがとうございました
- 79 :デフォルトの名無しさん :2018/03/10(土) 19:49:40.80 ID:NQUwT7o+0.net
- あ、Cookie要求ヘッダーを$_COOKIE['key']で扱えるという話かな?
だとすると無理ですね
Cookieのようにヘッダーに含めてやり取りするわけじゃないので
そもそも小細工しなければlocalStorageからのデータかどうかも分からないし
小細工してls_keyとかの名前でpostすれば$_POST['ls_key']で取れるのでは
- 80 :デフォルトの名無しさん :2018/03/13(火) 06:41:43.09 ID:3S6NtZAK0.net
- cron.phpを
function Cron ($table) {
require_once("./pdo.php"); //DB接続
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
として、他のrun.phpから
require_once("./cron.php");
Cron("aclass");
としてもエラーはでないのですが
require_once("./cron.php");
Cron("aclass");
Cron("bclass");
とするとFatal error: Uncaught Error: Call to a member function query() on null
とエラーがでるのですがこれはどのように修正すればよいのでしょうか?
- 81 :デフォルトの名無しさん :2018/03/13(火) 10:52:58.55 ID:RXShV79h0.net
- cron.phpを
require_once("./pdo.php"); //DB接続
function Cron ($table) {
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
こうしたらいいんじゃね?
- 82 :デフォルトの名無しさん :2018/03/13(火) 19:54:39.54 ID:mdBQKmC7M.net
- そのようにしたら
Cron(“aclass”)だけでも
同じエラーがでました
- 83 :デフォルトの名無しさん :2018/03/13(火) 20:42:12.63 ID:Xu1UKUsw0.net
- $pdoがpdo.phpでグローバルになっていない、とかのヲチでは?
- 84 :デフォルトの名無しさん :2018/03/13(火) 21:18:41.23 ID:U9FOV+VD0.net
- >>80
function Cronの最後の所で
$pdoと$stmtにnullを代入してみたら?
- 85 :80 :2018/03/14(水) 00:06:06.83 ID:0ajxFWw5M.net
- どちらをやってもうまく動きませんでした
設計を大幅に変えて他のやり方で試して見ます
ありがとうございました
- 86 :デフォルトの名無しさん :2018/03/14(水) 00:11:37.24 ID:QheYb9tS0.net
- >>74-79
Node.js では、
cookie はクライアントから、
HTTP request headers の、cookie に入れられて、サーバーへ送られる
一方、LocalStorage は、Form のhidden などに自分で詰めて、
サーバーへ送るように書く
- 87 :デフォルトの名無しさん :2018/03/14(水) 00:26:02.24 ID:QheYb9tS0.net
- 結局、こういうSQL文になるのだろ。
だから、aclass, bclass のテーブルが無ければ、エラーになる
SELECT feed FROM aclass;
SELECT feed FROM bclass;
- 88 :デフォルトの名無しさん :2018/03/14(水) 00:46:02.96 ID:PZuim+KR0.net
- 設計がキモいからアレだけど
require_once("./pdo.php"); //DB接続
function Cron ($table) {
global $pdo;
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
じゃね
- 89 :デフォルトの名無しさん :2018/03/14(水) 10:29:49.46 ID:VrVVPjKa0.net
- いや設計からやり直すで正解
requireやらglobalやら何年前の話だw
- 90 :デフォルトの名無しさん :2018/03/14(水) 11:04:36.09 ID:k2P8bAPR0.net
- それはそうだけど、globalに限らず、PHPの悪いところを知ることはとても重要だ。
- 91 :デフォルトの名無しさん :2018/03/14(水) 12:46:27.39 ID:nr/g/ZaE0.net
- phpで他のサイトのhtmlを読み込む方法を教えて。
- 92 :デフォルトの名無しさん :2018/03/14(水) 12:54:58.15 ID:VrVVPjKa0.net
- 組み込み関数使う一番簡単な方法は
$html = file_get_contents('http://');
guzzleとかスクレイピングしたいならGouttteとか
何らかのライブラリを使った方がいいとは思うが
たぶんそういうレベルじゃないよね
- 93 :デフォルトの名無しさん :2018/03/14(水) 18:27:19.65 ID:0BiLJwj+0.net
- >>89
こういった操作をするにはどう設計するのが
いいんでしょうか?
- 94 :デフォルトの名無しさん :2018/03/14(水) 19:43:27.01 ID:VrVVPjKa0.net
- >>93
Magento最新版のソース辺りでも見てみれば?
>>80のソースコードはPHP4時代を彷彿とさせるし
10年は古いと思っておいて間違いない
- 95 :デフォルトの名無しさん :2018/03/15(木) 21:50:22.39 ID:Qb1XFtti0.net
- Call to a member function query() on null
これは2回目のquery()を呼びだせていないエラーじゃないの?
require_once("./pdo.php");してるから1回目は呼び出せる。
だけど、2回目は読み込まれないから呼び出せない。
require_onceだから。
- 96 :デフォルトの名無しさん :2018/03/16(金) 05:55:28.99 ID:Rb17xQxt0.net
- PHP質問スレ無能さ自慢大会開催してるのに
本質ついてくるのやめろ
- 97 :デフォルトの名無しさん :2018/03/16(金) 06:05:56.53 ID:gZCff7dQ0.net
- 英語が出来るかどうかってプログラミングの習得効率をだいぶ変えるよな
- 98 :デフォルトの名無しさん :2018/03/16(金) 10:23:55.97 ID:tytL0PIQ0.net
- PHPみたいなスクリプト言語のエラーメッセージって
中学レベルの英語力で理解できると思うけど
英語アレルギーな人はちょっとエラーが出ただけで
もうダメだ〜おしまいだ〜ってなるっぽい
ソースはプログラミング言語の講師経験がある俺
英語力以前に問題解決能力の問題
- 99 :デフォルトの名無しさん :2018/03/17(土) 13:01:40.05 ID:gJ/QHesH0.net
- 下らない質問します
PHP でフォルダのファイルを監視することは出来ますか?
初心なので、どういう仕組みにすれば良いのか、よくわかりません。
まず、各種センサーデバイスから、任意のフォルダにデータがUSB やLAN で放り込まれます。
(例log.txt)日時、デバイス番号、温度℃、湿度%
20180316,12:45:32,978456321,18,36
20180316,12:45:32,978456321,18,36
- 100 :デフォルトの名無しさん :2018/03/17(土) 13:05:39.17 ID:gJ/QHesH0.net
- カンマ区切りのログデータを監視して
20180316,12:45:32,978456321,18,36
更新されたら、MySQLにアップデートして
ウェブページを見たら温湿度状態が表示されるようにしたいです。
よろしくお願いいたします。
総レス数 1004
345 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★