TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
プログラムに詳しくなりたい
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
プログラミングのお題スレ Part11
暇だから最強のメモ帳つくらね?【java】
データ構造,アルゴリズム,デザインパターン総合スレ 3
次世代言語13 COBOL Java PHP VBA Ruby
Win32API質問箱 Build124
C/C++以外の推薦図書/必読書のためのスレッド
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
Visual Studio 2019 Part2

【PHP】下らねぇ質問はここに書き込みやがれ 10


1 :
PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 9
http://mevius.2ch.sc/test/read.cgi/tech/1513760420/

次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

2 :
関連リンク
■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 :
下痢が出そうで出ないのですがどうすればよいでしょうか?
お腹が下らないんです

4 :
>>3
本屋に行け

5 :
class FriendList implements IteratorAggregate{
private $list=[];
public function getIterator():Traversable

6 :
↑誤爆すみません。↓よろしくお願いします。
---Friendlist.php---
<?php
class FriendList implements IteratorAggregate{
private $list=[];
public function getIterator():Traversable{
return new ArrayIterator($this->list);
}
public function add($p){
$this->list[]=$p;
}
これを他のクラスでインスタンス化して、foreachで反復処理する場合、
$friendl=new Friendlist();
foreach($friendl as $value){
}

どの部分でFriendlist.phpのgetIterator()が読み込まれるのでしょうか?
foreact部ですか?

7 :
>>6
foreachでインスタンスを使うと、getIteratorが呼び出され、ArrayIteratorのコンストラクタにlist配列が引き渡され、ArrayIteratorインスタンスとしてiteratorが戻されます。

8 :
アクセスカウンターを自分のサイトに
付けたんだけど、シンプルにこれにしようかと思うんのだが、
やっぱ、30分〜1時間の同じipは弾くとかの改造すべきなのだろうか?
なんか漠然と意識高い系のアクセスカウンターにしたい気もする
アドバイスお願いします。
https://www.php-factory.net/counter/01.php

9 :
>>8
そんなの自分次第なんだし好きにすれば?

コード読んでみたけど
同じIPが連続した時のみカウントしないようにはなってるが
あんま意味ないなこれw

クッキー食わせて指定時間以内ならカウントしないとかなら
ちょっとした改造でできるんだしやってみれば?

10 :
Symfony2に関しての質問です。
EC-CUBEのプラグインを開発しているのですが、
例えば、管理画面の会員登録にradioを置きたいのですが、
どうやってフックすればいいのか、よく理解できていません。
というか、Hello Worldに到達できていません。

何かいい解説サイトとかないでしょうか?

11 :
鼻の穴に入れたらそのまま頭の上まで通すんだよ

12 :
unsetについて教えてください

<?php
$x=10;

function fc(){
global $x;
unset($x);
return ++$x;
}

print $x;// 結果10
print fc();//結果 1

となるのですが、関数内で$xをグローバルにしても、
unset($x)すると、ローカルな$xを作ってしまう、ということなのでしょうか?

13 :
unsetしたら無くなる
returnの行で
$x=0;$x=$x+1;
をしてる
return ++$y;
ならどうなんだろうね

14 :
>>12
最後にもう一度 print $x; をやってごらんよ

15 :
>>12
http://php.net/manual/ja/function.unset.php

unset($x)の時の$xはローカル変数の$xになってます。
関数内でグローバル変数としての$xを破棄したいのなら
unset($GLOBALS[]);を使います。

そもそもグローバル変数とローカル変数のスコープが異なるのは、
関数内の変数の取り扱いで、グローバル変数に影響させない為
関数の外でunsetせず、関数内で安易にグローバル変数をunsetさせず、
特別な取り扱いをさせている、ということなのですね

16 :
>> 12
これ、notice 発生するでしょ。
学習時は、そういうの気にしたほうが良いですよ。

グローバルに使うケースなんてあまりないから、マニュアル見る良いきっかけにはなったけどw

17 :
>>13
>>14
>>15
>>16

皆様ありがとうございました。
最後にprint $xをすると、結果10になります。
関数内の$xと外の$xは別の値を参照してるのですね。
noticの部分も見逃さずに調べる癖を付けようと思います。
どうもありがとうございました。

18 :
>>17
>>16も書いている通り
return ++$x; の行で
Notice: Undefined variable
というエラーが発生するので、そもそもコードとしておかしい

php.iniの設定で
error_reporting = E_ALL
display_errors = On
を指定してエラーを全部見る癖をつけよう

どうしてもphp.iniの設定を変えられないならスクリプトの先頭で
error_reporting(E_ALL);
ini_set('display_errors', 1);
を宣言

これやらずに勉強しても意味ないと思え
それぐらい重要

19 :
>>18
何冊かテキスト買って読んでいるのですが
初めて教えてもらえました。
今後、是非、そのコードを入れて
エラーに慣れていこうと思います。
ありがとうございました。

20 :
>>19
学習・開発環境では
error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /path/to/error

で、本番(ネット上に公開する)環境では
log_errors = Off
として、エラーは出力せずログに記録するのみとする
(エラーを出力する事はセキュリティ的な穴になり得るから)

/path/to/error ってのはエラーを記録したいファイルへのパスってことね
書き込み権限与える事を忘れないよう

これやるとやらないとでは上達速度に相当差がつく


※本番環境では error_reporting のレベルを下げると書いてるものがたまにあるが
※大間違いなので真似しないよう

21 :
小数点8桁を含むjsonをjson_decodeすると6桁に丸められて出力されるわこれ

どうしたらいいんだ。。

22 :
http://codepad.org/L6rRjLC4

23 :
Laravelwwwwwwwww

24 :
・我慢する
・妥協する

好きな方を選んでいいぞ

25 :
age

26 :
laravelに関する質問って、どこですればいいですか?

27 :
Web板にある

28 :
symfony2は?

29 :
同じくWebProg板にある

30 :
webprogのphpスレは初心者お断りみたいだから
このスレで質問したほうがいいけど
初心者お断りスレじゃなければwebprogの該当スレでいいんじゃね

age

31 :
エディタの配色テーマによっては、下記のようなスラッシュで囲んだ文字列がエラーっぽい色で表示されるんですが
書き方が間違っているんでしょうか?

$var = '/string/';

32 :
preg_matchとかの正規表現だと判断されてるとかかな?

33 :
>>32
正規表現も値によっては色が変わったので、それかもしれません。
ありがとうございました

34 :
EC-CUBE3の質問って、ここでいいの?

35 :
>>30
ありがとうございます。
@slot と @includeの違いについてなのですが、
@slotは、@endslopまでの範囲の記載内容をテンプレの変数に割り当て
@includeでは、連想配列をつかって、テンプレ側でキーに対応する値を表示させる、ということのようですが、
結果的に同じような役割のように思えます。
決定的な違いって何なのでしょうか?

36 :
機能的な違いはない
htmlタグを含む場合はslotのほうが見やすい(書きやすい)


と誰かが言ってた

37 :
ありがとうございました!スッキリしました!

38 :
larabelを使ってます。
その機能でオートローダーのスタティックを利用してます。
useしてnewするのは不要にってます

一方、larabelにはdi機能というのもあるようです。
どちらもnew不要ですがどちらの使い分けとかパターンわけなど何か使い分けるヒントをお願いします

39 :
class作るとき必ずinterfaceって作るものなの?

40 :
おめでとうございます。今年もよろしくお願いします。
laravelの質問なのですが、ご教授くださいましたら幸いです。

class HelloController extends Controller{
public function index(Request $request,Response $response){

$html =<<<EOF
<html>
<body>
<h1>request</h1>
<p>{$request}</p>
<h1>response</h1>
<p>{$response}</p>

</body>
</html>
EOF;

$response->setContent($html);
return $response;
}
}

この最終行から3行目の,return $responseを、return $htmlとしても、ブラウザに表示される内容は同じです。
return $htmlで表示させないで、responseのcontentにhtmlコードを追加してreturnしている理由は、何かあるのでしょうか?

41 :
>>40
ララベルの仕様をみてsetContentはなんと書いてあるの?

42 :
>>41
ありがとうございます。
setContentは、Responseでクライアントに戻すHTMLソースが格納されてます。
HTMLソースを返すのなら、return $htmlを返しても同じなのかな、と思いまして質問しました。

43 :
掲示板作ってるんだけど、更新すると連投しちゃうのを防ぎたいんだけどどうすればいい?
POSTの中身を消して分岐させるとかイメージでいいの?

44 :
>>43
登録後にブラウザの更新ボタンが押されると送信済みのPOSTデータが再送信され結果2重登録してしまうって事だよね?

なら↓のやり方でどうか
 画面アクセス毎にセッションにランダム文字列を保存&出力htmlに<INPUT type="hidden">で保存した文字列を埋め込む
 登録処理時、セッションに文字列が無い場合やPOSTされた文字列とセッションに保存された文字列が一致しない場合はNGとする

45 :
戻って更新なら連投の可能性もわかるけど
ただの更新でなんでそんな状況になるのか

46 :
投稿内容をどこに保存しているかによるけれど
Requestに保存されてるんだからって言えばいい?

47 :
indexから同じindexにpostしてindexで更新してるってことかな?
普通はpost用のコントローラに渡して実行後にindexにリダイレクトするから
戻るおさん限りは更新しても問題にはならんと思うのだけど
チャットほどじゃないにせよリロードが出来ない掲示板なんて…
まあ手動じゃなくて更新データはスクリプトで非同期でとってくりゃいいけど
サーバでどうにかなればプッシュすれば利便性もUP

48 :
ディベロッパーツールで確認してごらんよ
POSTつかってリロードするとブラウザ内でPOST情報がどうなっているか

49 :
>>43
同じ掲示板にジャンプして書き込まれたPOSTの中身を確認してテキストに保存してって感じで作ってる
でもtime変数使ってページ読み込んだ時とボタン押されたときの変数で一致したら書き込むって感じでやってみるわ

50 :
POST後はLocationでリダイレクトしちゃうな

51 :
>>50
それよりは「戻る」にも対応できる >>49 の方法の方が利点があるんじゃね

52 :
Rails など、普通のフレームワークの作り方では、
Post したら別の画面、一覧画面などに移動する

ルーティング(routes.rb)に、CRUD が定義されている。
追加(C)・更新(U)されたら、一覧(R)に戻る

一覧に戻ると、追加・更新されたのを見れる

53 :
戻るに対応するなら
セッションでトランザクション処理のようなことをやればいいだけだけど
更新するだけで連投されるなんていうミラクル仕様に突っ込んでるだけで
それとこれは話が別よ

54 :
>>49
俺が作った掲示板は、if($投稿された文章==='保存したテキスト')die('二重投稿です')ってやってる
要するに重複チェック

55 :
他人のファイルに書き込みたいのですが、うまくいきません。

<?php
$file = 'https://mevius.2ch.sc/test/read.cgi/tech/1543392526/l50';
file_put_contents($file, 'shine');
?>

なぜでしょうか?

56 :
phpの質問をお願いします

class HelloRequest extends FormRequest

57 :
すみません、誤射でした><

class HelloRequest extends FormRequest{
public function authorize(){
if($this->path() =='hello'){
return true;
}}}

if文にあるthis->path()は、validationメソッドですが
スーパークラスのFormRequestはControllerを継承してるのでしょうか?

また、laravelのクラスの継承図のようなものってどこかにありますか?

58 :
>>55
file_put_contentsは使わないけどそれ以前にPOSTする為のパラメーターが足りてない
どういうことか理解できるならstream_context_createのページ見てみればいい
それ踏まえて方法はいくつかあるがcURLが一般的なので「PHP cURL POST」でググればいいよ

59 :
>>57
Laravelは使わないから知らないがLaravel APIでググったらこんなん出てきたけども
https://laravel.com/api/5.7/Illuminate/Foundation/Http/FormRequest.html
あとは頑張れ
https://github.com/laravel/framework/blob/5.7/src/Illuminate/Foundation/Http/FormRequest.php

60 :
cakephp 2

find x3回

(unbind, find) x3回
にしたら8倍速くなった

やってること合ってる?

61 :
超くだらない質問なんですが
PHPにパスワードを保存しようと思うのですが
PHPのソースコードが読まれないか心配です
いちおうブラウザからはソースを選択しても表示されないのですが
もしかしたら何らかの方法で読まれる可能性もありそうで
心配で寝れません
教えて下さい
お願いします

62 :
環境変数で入れるかせめてハッシュ化する

63 :
パスワードをスクリプトから分離して
phpからは参照出来るが外から直接参照できないとこ(ドキュメントルートの上とかDBとか)に置く
ファイルに保存するならファイル名は.htを先頭につけるといい
パスワードはハッシュ化しておく
これらが有効なのは放置してサーバの仕様変更に気づかなかったり(php廃止とか)
設定ミスってphpをtxtとして配信してしまうようなケースのみ
そのへんに問題なくてphpのソースコードが見られてしまうような場合は
もう何もかもがだめなことが多いので心配するだけ無駄だわ

64 :
>>59
わざわざありがとう
今日は時間が取れそうなのでちょっとしらべてみます

みなさんはどんなフレームワーク使ってますか?

65 :
Laravel使いたいのに絶対にcakePHP!!と言われて仕方なくそっちでやってる

66 :
すみません、助けてください

Vagrantが警告出てインストール出来ない環境って
何が問題なんでしょうか?
インストールが強制終了されます

バージョンは最新です
何が邪魔してるのでしょうか?

https://i.imgur.com/3jCEdpw.png

67 :
知らん
てか普通は作ったサポートに聞くだろ
なんで関係ない他人に聞くんだよ?

68 :
PHPの質問でもないしなぁ

69 :
>>65
ありがとうございます!

cakePHPもフレームワークで優れていると
買った教材に書いてありました
今後とも、色々ご指導お願いします!

70 :
今でも使えるリファレンス本って何があるのでしょうか?
出版されてるものって古いですけど使えます?

71 :
phpはほぼ変わってないからよほど古くない限りどれでもいいからさっさとやれ

72 :
laravel マイグレーション、シーディング処理について教えてください
現象:マイグレーションは作成できた。シーディングの実行で、columnが無い、というエラーが出る

----- migration --------
class CreatePeopleTable extends Migration{
pubulic function up(){
Schema::create('people',function(Blueprint $table){
$table->increments('id');
$table->string('name');
$table->timestamps();

73 :
laravelついて教えてください。現象:マイグレーションでテーブルは作成できた。シーディングの実行で、columnが無い、というエラーが出る

//----- migration --------
class CreatePeopleTable extends Migration{
pubulic function up(){

Schema::create('people',function(Blueprint $table){
$table->increments('id');
$table->string('name');
$table->integer('age');
$table->timestamps();
});}

//----- Seeder -----
publid function run(){

$param=['name'=>'suzu','age'=>20,]:
DB::table('people')->insert($param);

$param=['name'=>'mizu','age'=>24];
DB::table('peope')->insert($param);}

//----- Seeding実行 -----
php artisan db:seed

//----- エラー -----
General error:table people has no column named name(SQL:insert into "people"("name","age") value(suzu,20))

catch(Exception $e){//・・・
$query,$this->prepareBindings($bindings),$e
マイグレーションで作成したテーブルにデータが登録できないのはなぜなのでしょうか?よろしくお願いします。

74 :
すみません、なんだか分かりませんでしたが自己解決しました。
お騒がせしました。

75 :
練習兼ねて小規模&少機能で簡単なネットショップを作ろうとしてるのですが、設計段階でファイルがごちゃごちゃになってしまいそうです
フォルダの作り方やファイルの分け方はどんな感じでやればスッキリ分かりやすくなりますかね?

76 :
>>75
小規模でもフレームワーク使うのがいいよ

77 :
フレームワーク自体のメンテが厄介だから入れずに済むのであれば入れない方がいいよ

78 :
rep2という2chビューアのうち、DB連携部分のみうまく動かずデバッグしています。
■環境
php7.2で、phpinfo()には mysqli,mysqlnd,pdo_mysql
いずれもバージョン情報が表示されてて、必要な環境は準備できていると思っています。

■現象
$db = \DB::connect($dsn);
を実行すると、"DB Error: no database selected"というエラーになります。実際やりたいこと(imagecache2の利用)もできません。

■調べたこと
$this->comment('dsn=' . var_export($dsn, true));
の結果、以下の通り$dsnは正しいように見えます。
dsn='mysqli://rep2:password@localhost:3306/rep2'

しかし、以下のようにすると…
$db = \DB::connect($dsn);
$this->comment('db=' . var_export($db, true));

配列にusernameやpasswordが代入されていないようです。
'dsn' =>
array (
'phptype' => 'mysqli',
'dbsyntax' => 'mysqli',
'username' => false,
'password' => false,
'protocol' => false,
'hostspec' => false,
'port' => false,
'socket' => false,
'database' => false,

ではなぜ代入されないのか、がわからず。教えていただけないでしょうか。

79 :
よく知らないけど、
connect は、データソースへつなぐだけじゃないの?

SQL のselect みたいなものは無いの?
CRUD も検索して

80 :
$url = 'http://example.com/'+'/path/';
だと、途中に余分なスラッシュが入りますよね。
それを綺麗に整形してくれる関数や手法などはありますか?

81 :
標準関数にズバリのものはないと思うけど探せば誰かコード書いてるはず
簡単なのでよければsubstr使うとか
parse_urlしたのを組み直すかそのあたりで
./../とかも考慮するならちょっと面倒になってくるが

82 :
>>80
自分でパスを連結する関数を書いちゃうとかどうだろう?
その中では rtrim($path1, '/') . '/' . ltrim($path2, '/') を繰り返す感じ?

83 :
/ の2個以上の連続を一つに置換する操作する処理を見かけたことあるなぁ。。。
あんまりきれいじゃない気がするけどw

84 :
ちょっと乱暴かも知れませんが、スラッシュが二重になっても
パスとしてはエラーにはならないと思います(見た目汚いですが)

85 :
echo 'aaa';
echo('aaa');
include_once 'path/file.php';
include_once( 'path/file.php');
のようにカッコが有っても無くても良い関数がありますが、
php上級者の人はどっちを使うのでしょうか?
理由も教えてけろ

86 :
関数・・・・・カッコを付ける
言語構造・・・カッコを付けない

echo も include も言語構造。
迷ったらマニュアルの例文をコピペ。

87 :
phpの関数の戻り値って望む型の他にfalseも返ることがあるよね
そんで7からは戻り値の型宣言いれて戻り値の型が違ったらTypeError出す

もうごちゃごちゃだね

88 :
言っていることがごちゃごちゃだってことは分かった

89 :
Ruby では、これだけで正常につながる

File.join 'http://example.com/', '/path/'

90 :
laravelに関して質問させてください。
Eloqentのモデルに関してです。

<?php
namespace ---
use ---\Model
class Person extends Model{
public function scopeAgeGreaterThan($query,$n){
return $query->where('age',$n);
}

コード中の$queryは、$thisとしても同じ結果が得られます。
$thisではなく、引数$queryを利用する意味は、何かあるのでしょうか?
もしあるのなら、その意味、意義を教えていただけないでしょうか?
よろしくお願いします。

91 :
$thisは自分自身のインスタンスからテーブル情報を取得
$queryはクエリビルダーを使ってテーブル情報を取得

92 :
ttps://stackoverflow.com/questions/4366730/how-do-i-check-if-a-string-contains-a-specific-word
の5831の回答で、
if (\strpos($a, 'are') !== false) {
の部分ですが、if( の次のスラッシュは何ですか?

93 :
そのサイトの下の方では、\ は付いていないから、気にしなくてよいのでは?

<?php

$haystack = 'how are you';
$needle = 'are';

if (strpos($haystack,$needle) !== false) {
echo "$haystack contains $needle";
}

?>

94 :
>>93
了解です、気にしません。
ところで、わざわざ !==falseで判定する理由は何ですか?

95 :
Ruby には、偽がnil, false の2つしかないけど、
JavaScript, Python, PHP には、偽が10個ぐらいある

0, 0文字列、空配列とか、様々な可能性が排除できない。
少しでも表現を変えると、バグる

例えば、それをtrue に変えると、様々な偽の条件が存在してしまう。
0 の時とか、空配列とか

他の言語は、Rubyに比べて、バグる確率が高い

96 :
>>94
strposは0を返しうるから if (!strpos(...)) だと false が返ってきた(見つからなかった)のか 0 が返ってきた(先頭に見つかった)のか判別出来ない

http://php.net/manual/ja/function.strpos.php
の返り値の警告の部分

97 :
Ruby 以外の言語では、
!= など、普通の比較演算子では、偽が10個ぐらいあるから危険!

!== などの厳密比較演算子を使うべし!

98 :
>>92-93
名前空間指定してるだけ
phpの標準関数や内部クラスはすべて\の名前空間に属している
普通はわざわざ書かない

99 :
>>92のサイト見てなかったけどおそらく別の名前空間内で使うこと想定して
回答したんだろうね
でも例えばこんなコードでも書かない限りは不要

namespace my;
function strpos(string $haystack, string $needle, int $offset = 0)
{
$retval = \strpos($haystack, $needle, $offset);
if ($retval === false) {
return false;
} else {
return $retval + 1;
}
}

var_dump(\strpos('abcde', 'c'));
var_dump(strpos('abcde', 'c'));

100 :
>>95
良く分かりました。


100〜のスレッドの続きを読む
Pythonのお勉強 Part60
わんくま死亡か?
C言語なら俺に聞け 155
プログラム板自治スレッド その16
Rust Part7
s = "" + i;でintをStringに変換するのはなぜだめか
Access VBA 質問スレ Part1
Visual Studio IDE環境
■特許庁新システムを作る■
くだすれPython(超初心者用) その43【Ruby禁止】
--------------------
【夜明けまで強がらなくてもいい】乃木坂46★9718【本スレ】
HR/HMレビューブログのスレ Part4
【外務省】韓国滞在者に反日デモ注意呼びかけ[8/4]
【都知事会見】小池百合子「東京都内のパチンコ店 休業要請に応じているのは7割程度。応じない店は今月28日に店名公表する」
絵本作家のぶみ part127
【韓国】 マスクを購入するため並ぶ市民たち
エロカメコ向けイベント情報(総合)
【整形】高梨沙羅☆女子スキージャンプ Part35【イモト
シングルコアのPCを使っていく人たちの為のスレ
橋本潮3 だ・か・ら!カリフォルニア・ドリーミング〜!
機動戦士ガンダム ギレンの野望【ESP】
儒教に支配された中国・韓国 2
深川麻衣さん、かつてないほどの注目を集める
自動車グリーン化税制 13年超の車両だけでなく過走行車にも重課を検討
FF14のPDが酒井智史なら
【国航】エアチャイナ・中国国際航空CA011便【PEK】
東京シティ・フィルハーモニック管弦楽団
【加計学園への補助金】中村時広「県民の税金なので是非を議論する必要がある」 ネット「お前の過去についても記者会見が必要だろ?」
【FFBE】FINAL FANTASY BRAVE EXVIUS Lv2599【侵略!EXチケット】
【チート】PUBG part4【hack】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼