- 1. ボクとPHP・Laravel・Dockerとの約200時間
- 2. ポートフォリオの解説投稿(自分なりのアウトプットです!!)
- 3. パスからidを取得したい
- 4. 【PHP】GET・POST サーバー 作成
- 5. 【2021/03】DockerでPHPのWebアプリ開発環境(スクラッチ)を構築する。
- 6. PHPerKaigi2021参加レポート
- 7. PHPerKaigi2021で学んだセッション管理について
- 8. idiorm.php でテーブルのカラムを取得する
- 9. MAMP環境でtimezoneが反映されない問題の解決過去記事による罠
- 10. laravel8 Auth認証をしていないと表示できないページを作成する
- 11. [Laravel]キーワードが含まれて”いない”レコードをDBから取得する方法
- 12. 30代未経験でPHPエンジニア(phper)になるなら
- 13. Laravel 8.xでバリデータを作成する
- 14. [Laravel] LINE ログインAPI,LINE Messaging APIを使ってみる。
- 15. 血圧管理システムのWebシステムをデザインしました
- 16. Carbonチートシート
- 17. staticをインスタンス化した後から指定するとどうなるか
- 18. Macでバッチファイル(commandファイル)を作ってダブルクリックのみでビルトインウェブサーバを起動させる方法
- 19. Macのターミナル上でプライベートIPアドレスを調べる方法
- 20. Web API開発をするなら、ドキュメントは自動生成にしておこう!(CakePHP編)
ボクとPHP・Laravel・Dockerとの約200時間
#始まりは突然に…
あれは、ある企業に面接したときの事でした。それまで、私はRubyでの開発を行っており、ポートフォリオもRailsで作成していました。その面接で、ポートフォリオの説明を行い面接終了時に次のようなお言葉を頂いた時から始まりました。
**あなたに課題を出します。それを期限を決めませんが行ってください。**とのことでした。課題とは以下の通りです。
[![Image from Gyazo](https://i.gyazo.com/d8831f7d2e8311d2bea7480b0cc4a1ed.png)](https://gyazo.com/d8831f7d2e8311d2bea7480b0cc4a1ed)
##:fire:それを成し遂げた理由:fire:
それは、至って単純な話です。
**やってみたい・挑戦してみたい**と思ったかです!
やりたいやってみせるという気持ちで望みました!#で、一体何から着手したのか
プロセスは以下の通りです。
①プロゲートの初級(PHP基礎学習)
↓
②ドットインストールPHPに関するもの全て(PHP基礎学習)
↓
③ドットインストールDo
ポートフォリオの解説投稿(自分なりのアウトプットです!!)
#自分が書いたコードを説明できないのは恥だよ!!
これは、あるYouTuberの言葉です。
確かにそうですよね…
はい、やります。やらせてください!
解説やらせてください!
てな感じで始めます笑
と、その前にこちらがポートフォリオの内容です。#三部構成でいきます!
Controller・Model・Viewの三部構成で解説していきます。
主にTweetの内容からです。###まずControllerから行きます!
“`php:app/Http/Controllers/TweetController.php
namespace App\Http\Controllers;
#namespaceとは、名前空間といい、こちらを使用してクラス被りをしないようにする。というもの。use App\Models\Tweet;
use App\Models\Tag;
use App\Models\Comment;
#各種のModelを読み込む際の記述
use Storage;
use Illuminate\Support\Str;
#ストレージファイルの読み込む際の記述
use Inter
パスからidを取得したい
#背景
dreddでapiテストを作成している。
テストデータを作成するときに使用するidを取得したい。
そのためにパスからidを取得する。#環境
PHP 7.3.22#末尾のidを取得する
“`
$path = ‘/users/30’;
$id = intval(basename($path));var_dump($id);
“`結果
“`
int(30)
“`やっていること
basenaemでパスの末尾の文字列を取得する
intvalで整数型に変換する#idがパスの途中にある場合
idが末尾になるようにパスから末尾の文字列をトリムすればいい“`
$path = ‘/users/30/admin’;
$id = intval(basename(rtrim($path, ‘/admin’)));var_dump($id);
“`結果
“`
int(30)
“`#ちょっと沼ったのでメモ
basename()の第2引数にsuffixを指定できる。
これを指定することで、指定した文字列を除いて末尾の文字列を取得できる。
参考
h
【PHP】GET・POST サーバー 作成
今回はphpのget・postサーバーの作成について書きます。
正直、今回の記事は自身のメモとしての意味合いが大きいです。
似たようなことが書かれた記事は多いですし、コードの内容も多くないため簡潔に書いていこうと思います。
##実装環境
今回はそんなに手間をかけるつもりはないため、xamppを使用します。
VSCodeを使用してコードを書きましたが、コマンドでビルドが必要だとかいうこともないので、テキストエディターは何でも良いです。
##GET・POST サーバー
“`index.php
【2021/03】DockerでPHPのWebアプリ開発環境(スクラッチ)を構築する。
執筆日:2021/03/27
プログラミング歴半年の俗に言う駆け出しエンジニアです。
これまでRubyで個人開発をしてきましたが、先日就職が決まり、業務でPHPを触る事になりました。そんなわけで、Dockerを用いて開発環境を構築したのでメモを残します。
##参考
上記記事では各設定の詳細な解説もされているので併せてご確認ください。
##要件
・Mac OS Catalina(10.15.7)
・PHP 7.2
・MySQL 5.7
・NginX(latestイメージを使用)
・phpMyAdmin(latestイメージを使用)
・Docker,docker-compose
・FWを使わずスクラッチでの開発を想定現実ではスクラッチで開発するケースは少ないと思うので、あくまでローカルでの練習用環境構築です。
Macユーザーであれば、この記事通りの手順で(コピペでも)開発環境を構築できると思います。間違えている点やtypo等あればお手柔らかにご指摘いただけると幸い
PHPerKaigi2021参加レポート
# はじめに
[PHPerKaigi2021](https://phperkaigi.jp/2021/)の参加レポートです。
前夜祭、1日目、2日目と全て参加した中で特に面白かったセッションとかとかを備忘録的な感じで。# セッションの感想
## [PHPerでもわかる!実戦Webアクセシビリティ](https://fortee.jp/phperkaigi-2021/proposal/2ad09067-1c9f-41ce-8574-7abb06f65ce4)
WEBアクセシビリティを向上させる事に対する基本的な知見を知れました。
登壇者さんが言われていたゴールの”Webアクセシビリティを完全に理解した”という状態になれたと思います。
普段コーディングする時に、マシンフレンドリーとかHTMLの標準のコーディングとかを意識していないので、これから意識していこうという気持ちになりました。## [某OSS blogのリファクタを進めつつ、コードについて話す](https://fortee.jp/phperkaigi-2021/unconference/view/cec104ba-f3
PHPerKaigi2021で学んだセッション管理について
PHPにおいて、セッションを使うには、このように使うのが一番簡単。
“`php:index.php
idiorm.php でテーブルのカラムを取得する
“`php
$record = ORM::for_table(“table_name”)->find_one();
$columns = array_keys($record->as_array());
“`
MAMP環境でtimezoneが反映されない問題の解決過去記事による罠
## タイムゾーンが反映されない問題について
### 疑う箇所
– 編集しているphp.iniファイルは合っている?(php.infoから確認できます)
– コメントアウトされてない?
– 編集後に再起動した?## 本題
「PHP MAMP タイムゾーンが反映されない」などで検索すると同じような解決策がずらりと並びます。
ですが今回の問題は上記にあげた疑う箇所によるものではないです。
というのも過去記事にもMAMPのデフォルトでも同じように以下の記載になっています。“`
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; date.timezone = “Europe/Berlin”
“`これを
“`
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone =
laravel8 Auth認証をしていないと表示できないページを作成する
# 目的
– Auth認証を行っていないと表示できないページを実装する方法をまとめる
# 方法
– ルーティングに記載するだけで実装が可能である。
– 下記のようなルーティング情報が記載されていたとする。“`アプリ名ディレクトリ/routes/web.php
Route::get(‘/top’, [TopController::class, ‘index’])->name(‘top.index’);
“`– 下記のように記載することで当該ページが認証していないと表示できないページにする事ができる。
“`アプリ名ディレクトリ/routes/web.php
Route::get(‘/top’, [TopController::class, ‘index’])->middleware([‘auth’])->name(‘top.index’);
“`
[Laravel]キーワードが含まれて”いない”レコードをDBから取得する方法
# キーワードが含まれていないレコードをDBから取得する方法
“`php//Eloquent Model を使用する形
$users = User::where(‘column名’, ‘not like’, ‘%’.$keyword.’%’)->get();//Eloquent Model を使用しない形
$users = DB::table(‘users’)->where(‘column名’, ‘not like’, ‘%’.$keyword.’%’)->get();“`
# 一言
[Laravel公式ドキュメント](https://laravel.com/docs/8.x/eloquent)にも[日本語翻訳版ドキュメント](https://readouble.com/laravel/8.x/ja/eloquent.html)にもないため記事化しました。
sql知ってる人からすると当然こうなるのでドキュメントにはないのでしょうね。
30代未経験でPHPエンジニア(phper)になるなら
## 著者の簡単な紹介
– SESから自社サービスに転職したバックエンドエンジニア
– Laravel好きからのRails好きへ
– 30代で経理からの転職した## 本やネットで基本的なものを学ぶ
– 変数
– 配列
– if
– foreach…おすすめサイト
詳しくわかりやすくさらに、サイト全体がかわいいのでとてもよいです。GRAYCODE
[PHPプログラミング \| GRAYCODE](https://gray-code.com/php/)## laravelを学ぶ
こちらの本で僕は勉強しました。
こちらを教科書により知りたいことをネットで調べました。[PHPフレームワーク Laravel入門 \| 掌田津耶乃 \|本 \| 通販 \| Amazon](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%
Laravel 8.xでバリデータを作成する
※PHPフレームワークLaravel入門 第2版を進めていたところ、バリデータを作成するフェーズでエラーが発生したので備忘録として記述しております。
# エラー内容
“`php
‘フォームを入力:’]);
}public function post(Request $request)
{
$validator = Validator::make($request->all(), [
[Laravel] LINE ログインAPI,LINE Messaging APIを使ってみる。
# [Laravel] LINE ログインAPI,LINE Messaging APIを使ってみる。
## 今回の題
LINEログイン、LINE MessagingAPIをLaravelにて実装しました。
アウトプットとして残します。##ログインAPI
###チャネルIDとチャネルシークレットの取得
[LINE Developers コンソールのログイン](https://account.line.biz/login?redirectUri=https%3A%2F%2Fdevelopers.line.biz%2Fconsole%2F “”)1. プロバイダー作成
![スクリーンショット 2021-03-28 9.40.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247585/f0ed1c9e-e16e-f4b2-fcc1-e4b612e8939e.png)2. チャネル作成(LINE ログイン)
![スクリーンショット 2021-03-28 9.42.02.png](https:
血圧管理システムのWebシステムをデザインしました
血圧管理システムのWebシステムをCSSでデザインしました。
以前の味気ないシステムがいい感じのシステムに変わりました。
昨日のオフラインミーティングでデザインを教えていただいたアドバイスを生かしました。
今後の課題はAWSクラウドに載せる部分になります。
Carbonチートシート
# [Carbon](https://carbon.nesbot.com/)
日時の操作に便利なライブラリ
[Illuminate\Support\Carbon](https://laravel.com/api/8.x/Illuminate/Support/Carbon.html) は [Carbon\Carbon](https://github.com/briannesbitt/carbon) を継承したクラスだけど昔ほど差は無い## Carbonをインストールする
“`
composer require nesbot/carbon
“`## Carbonを作る
“`php
$carbon = new Carbon(); // 2021-03-28 08:17:02.064073
$carbon = new Carbon(‘today’); // 2021-03-28 00:00:00.0
$carbon = new Carbon(‘2021-03-28’); // 2021-03-28 00:00:00.0
$carbon = new Carbon(‘2021-03-
staticをインスタンス化した後から指定するとどうなるか
#はじめに
最近、“`static“`がインスタンス化したものにも影響を及ぼすということを知らずに使ってしまい、その挙動に戸惑ったことがあるのでそのことについて書きたいと思います。
この記事を読めば“`static“`の理解が少し深まります。まず、以下のような課題があったとします。
Q. 以下の仕様を満たし、次の出力結果が出るようにコードを追記せよ。※環境は“`PHP7.4“`とします。
出力結果
“`
田中さんは日本人です。
ジュリーさんはアメリカ人です。
黄さんは中国人です。
ミュラーさんはドイツ人です。
“`“`php
Macでバッチファイル(commandファイル)を作ってダブルクリックのみでビルトインウェブサーバを起動させる方法
# ビルトインウェブサーバについて
[プライベートIPアドレスの用途](https://qiita.com/rimorimo/items/9ee259ffb492a073884a#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88ip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E7%94%A8%E9%80%94)参照.
# プライベートIPアドレスの取得について
[ターミナル上でプライベートIPアドレスを調べる方法 1](https://qiita.com/rimorimo/items/9ee259ffb492a073884a#%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E4%B8%8A%E3%81%A7%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88ip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E8%AA%BF%E3%
Macのターミナル上でプライベートIPアドレスを調べる方法
# 最も簡単にプライベートIPアドレスを調べる方法
わざわざターミナルでコマンドを入力しなくても,**システム環境設定>ネットワーク>[ 詳細 ]ボタン押下>TCP/IPタブ>IPv4アドレス**の欄から簡単に調べる事ができるが,**ネットワーク系のスキルを向上させるためにはやはり最低限のターミナルコマンドを使いこなせなければならない**というのが筆者の持論である.
![private_ip_address.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478088/5ed23d60-4843-187c-665e-39c342feb6e4.png)
# ターミナル上でプライベートIPアドレスを調べる方法 1
macOSにおいてネットワーク状況を調べるための有名なコマンドと言えば`ifconfig`.Windowsでいうところの`ipconfig`に相当するものである.
“`bash
$ ifconfig
lo0: flags=XXXX
Web API開発をするなら、ドキュメントは自動生成にしておこう!(CakePHP編)
### この記事は何?
– [PHPerKaigi2021](https://phperkaigi.jp/2021/)で発表するスライドの補足資料
– 発表で紹介したサンプルコードと同じものを作成する手順のまとめ
– Swaggerの導入分だけ読みたい方は[こちら](https://qiita.com/AkitoTsukahara/items/5bab895b7b9943b0654f#swagger%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)
– この記事を作成する上で参考にさせていただいた記事。(丁寧な解説でとても分かりやすかったです。🙇)
– [CakePHP4 で Swagger3 を使って API ドキュメントを作る](https://qiita.com/katsuhiko/items/22511d5ed5eff3e4616a)
– 作成するAPIは[CakePHPクックブックのREST API](https://book.cakephp.org/4/ja/development/rest.html