エンジニアの卵_level1

【毎日更新!】エンジニアの卵のブログです!技術以外も書いたり。

php

【Laravel】直前にアクセスしたページのURLを取得する【188日目】

直前にアクセスしたURL、ページに来るためのリクエスト元のURL こうかく url()->previous(); 結果 "http://blog.hatena.ne.jp/willow710kut" みたいにStringで取得出来る。 余談、 /willow710kutの部分を取得するならPHPの parse_url()使って parse_url(url(…

【Docker】phpでPDOにmysqlを使うと、could not find driverと出る【186日目】

Dockerfile FROM php:7.1-fpm phpファイル $dbh = new PDO('mysql:host=mysqlaaa;dbname=dbname', 'username', 'password); エラー could not find driver 対処法 RUN docker-php-ext-install pdo_mysqlの一文をDockerfileに付け足す FROM php:7.1-fpm RUN d…

【Laravel】routeに名前空間(namespace)を使って、見やすい構成に【179日目】

こんな書き方あるよ Route::group(['namespace' => 'Admin'], function () { // "App\Http\Controllers\Admin"名前空間下のコントローラ }); 何が嬉しいの? App\Http\Controllers\Admin\SomeController.php App\Http\Controllers\Admin\AnyController.php A…

【PHP】null合体演算子とエルビス演算子(三項演算子)の違い【163日目】

null合体演算子とは null合体演算子(A ?? B)は、 Aが nullや undefinedの時に、Bを出力し、 非nullの時にはAを出力するものです。 例がundefinedやnullの場合の処理を考える時に便利です。 // undefinedなので、''が出力される echo $item ?? ''; // nullな…

【PHP】多態性(ポリモーフィズム)について勉強中【162日目】

元となる抽象クラス

【PHP】??。undefinedに対してifを書くときにissetを使わない方法。【161日目】

undefindedの時に、空文字を出したい if (isset($item)) { echo $item; } else { echo ''; } あるいは、三項演算子を使って echo (isset($item) ? $item : '') これをnull 合体演算子 (??)を使って書く null合体演算子 echo ($item ?? ''); 短い。見やすい。…

【PHP】フレームワーク使わずルーティングしたかった【144日目】

前提・ゴール nginx等で、強制的にindex.phpを読み込ませる index.phpから、URIに合わせて、別ファイルを読み込ませるのをゴール 手順 ①URIを取得 ②クエリと分ける ③URIに合わせてinclueするファイル分ける 書いたコード index.php(①と②を担当)

laravelの環境構築で参考にしたサイト一覧【125日目】

基本形 qiita.com Nginx + php-fpmの環境を作ろうとしたらPHPファイルがダウンロードされる utano.jp mcryptをphp7.2でもインストールする方法 blog.apar.jp ぼやき とりあえずわからないところは極力削って環境構築。 わからないままコピペよくない。 一応…

php7.2でmcryptがインストールできない問題【124日目】

Dockerやってたらmcryptがインストールできない なんでだーってなった。 コマンド間違えてないはずなのに、 /usr/src/php/ext/mcrypt does not exist って出る。なぜだ。 でもきっと私の記述が間違ってるんだ・・・ そう思ってた mcryptはPHP7.1で非推奨、7.…

疑似乱数を、再現可能な値にする方法【120日目】

何が嬉しいの? 擬似乱数を再現可能にすると、 バグとかの再現も出来る。 ドキュメント PHP: mt_srand - Manual PHP: mt_rand - Manual 結論 $seed = 10; mt_srand($seed); echo mt_rand(0, 255); echo mt_rand(0, 255); echo mt_rand(0, 255); mt_srand($se…

Laravel5.2以降で二重配列にバリデーションを入れる方法【117日目】

配列にバリデーションをかけたい arrayX = [['key' => 10], ['key' => 'aaa']] こんな感じのやつ。 arrayのkeyに対して、数値であるとバリデーションをかけたいやつですね。 公式ドキュメント バリデーション 5.3 Laravel 配列形式のフィールドをバリデーシ…

PHPで擬似乱数を作ってみよう【109日目】

擬似乱数を作ってみよう! ってことで、すっごく簡単に作ってみよう。 アクセスする時間に応じて、数値を返せば実質乱数じゃね?ってことでプログラム。

PHPでハノイの塔のプログラム!【108日目】

苦節3日、無事に出来上がりました。 むしろ3日かかったのかお前っていう。 寝て起きてシャワーを浴びてを2回繰り返したらプログラム出来ました。 注意。 いないと思いますが、このプログラム出来が良くないので、これをコピーしてプログラミング課題の提出…

【PHP】参照渡しと破壊的な関数とは。【103日目】

クイズ swapは2つの値を入れ替える関数です。 swapを実行した後の$x,$yの値は? 例のプログラム $x = 1; $y = 2; swap($x, $y); echo $x; echo $y; swap2($x, $y); echo $x; echo $y; function swap($a, $b) { $temp = $a; $a = $b; $b = $temp; } function …

このPHPのコードのメモリの扱いがわからない。【101日目】

問題のプログラム php > echo memory_get_usage(); 350552 php > class A { php { public $number = 10; php { } php > echo memory_get_usage(); 351040 php > $a = new A(); php > echo memory_get_usage(); 351096 php > $b = new A(); php > echo memory…

PHPの参照渡しのメモ【99日目】

参照サイト PHP: リファレンスとは? - Manual PHP: リファレンス渡し - Manual 伝える内容候補 極力参照渡しでメソッド作らない方が良い 普通のメソッドは、値を直接書き換えてるわけじゃないよ。コピーを使ってるんだよ。 メモリの存在←ここまで説明すると…

PHPの$a=$bが、$aをreturnしているのを調べよう【97日目】

導入のきっかけ willow710kut.hatenablog.com なので、=が関数なら、何をreturnしてるか調べようってお話 書いたプログラム $a = 0; var_dump($a); var_dump($b); var_dump($a = $b); var_dump($a); var_dump($b); var_dump($a = $a); var_dump($a = $b = $c…

PHPの==とか=って実際何してるんだろう【96日目】

演算子だってプログラム 何気なく書いてる+や=ってありますが、これって何をしてるのでしょう。 プログラムによって仕様が違うわけで。 そこで先輩に教えていただいた言葉。 『“演算子“とは全てただの関数である』 あーなるほど、引数が2つあって、関数が動…

PHPとswiftの『switch』の挙動の違い【91日目】

switchのbreakって邪魔ですよね。 phpやjavaのswitch文って、 基本的にbreak使ってcase内の内容だけを実行させるけど、 swiftはbreak要らないんだね! あとkotlinはwhenって形式だとbreak要らないみたい! 同じ名前でも違う挙動するんだねー ってことでコー…

LaravelのsortByとorderByの使い所【84日目】

sortByとorderByの違いって? sortBy()の使い所は、コレクションをソートする時に使います。 orderBy()はwhere()とかと同じで、データベースから取得する時に使います。 使い方の違い $query->get()->sortBy('id'); $query->orderBy('id')->get(); この2つの…

配列の中に配列が入っている時のforeach書き方2つ【83日目】

普通ならこうだし、これでも良いんだけど foreach($array as $items) { echo 'first: ' . $items[0] . PHP_EOL; echo 'second: ' . $items[1] . PHP_EOL; } こんな書き方もあるよ foreach($array as list($a, $b)) { echo 'first: ' . $a . PHP_EOL; echo 's…

Laravelで『ページ3』や『次へ』や『前へ』というページネーションの作り方【77日目】

参考 ペジネーション 5.1 Laravel 手順 ControllerでpaginateをつかってDBからデータ取得。 Viewでrenderで呼び出す(renderは{!! !!}のカッコで囲むこと) コード public function index() { $users = DB::table('users')->paginate(15); return view('user.i…

DBのデータを変形させて$model->valueで取るミューテター【76日目】

参考 Eloquent:ミューテター 5.1 Laravel 書き方 class User extends Model { /** * ユーザーのファーストネームを取得 * * @param string $value * @return string */ public function getFirstNameAttribute($value) { //最初の文字を大文字にして返す re…

PHPで二重for文を抜ける方法【74日目】

前回の記事 willow710kut.hatenablog.com 前回の問題 1.while (true) { 2. echo "1\n"; 3. while (true) { 4. echo "2\n"; 5. while (true) { 6. echo "3\n"; 7. [?????] 8. } 9. echo "2 end\n"; 10. break 1; 11. } 12. echo "3 end\n"; 13. break 1; 14.}…

【出題編1】PHPで二重for文を抜ける方法【73日目】

クイズ形式の試み。 クイズ形式で出題して、後日回答の参考になる記事を書くテスト 1.while (true) { 2. echo "1\n"; 3. while (true) { 4. echo "2\n"; 5. while (true) { 6. echo "3\n"; 7. [?????] 8. } 9. echo "2 end\n"; 10. break 1; 11. } 12. echo …

Laravelで多対多のリレーションを組む【71日目】

多対多とは ある人は、いくつかのグループに所属しています。 あるグループは、いくつかの人で構成されてます。 これが多対多です。お互いが複数の対象を持ってますね。 これをデータベースで表現すると、中間テーブルと言うものが必要です。 データベースだ…

Laravelでリレーション先のカラムでwhereする方法【68日目】

参照元 Eloquent:リレーション 5.1 Laravel 手法 $posts = Post::whereHas('user', function ($query) { $query->where('name', 'uirou'); })->get(); これでuserのnameがuirouのPostを取得することが出来ます。 前回間違ったものを書いたので訂正。 日記 …

(仮)Laravelでリレーション先のカラムでwhereする方法【66日目】

参照元 Eloquent:リレーション 5.1 Laravel 手法 $users = App\User::with(['posts' => function ($query) { $query->where('id', 10); }])->get(); これで、postsのid = 10を書き込んだユーザーが取り出せる。 思いっきり間違えてました。正しくはこちら。…

Laravelで過去に詰まった点を穴開き形式でまとめ。

はじめに これは Laravel Advent Calendar 2017 12日目の記事です。 前日は@kawaxさんの1コントローラー1アクション - Qiitaでした。 Web系来てまだ半年の私なので、コントローラーの肥大化は何度も経験してるのに、どう変えればいいのかわからない…… 一度振…

任意のClassに書いた定数を、bladeから呼び出す【52日目】

今日どう書くっけってなった {{ App\Models\A::NUMBER }}</div> ネタメモ インスタンス化$instance = app(App\Models\A::class) インスタンス比較$instance instanceof App\Models\A::class こんな書き方だった気がする。 日記 うろ覚えで書きました。間違ってたら…