- 1. MAMPでのtimezone設定
- 2. 【PHP】標準入力からの繰り返し【メモ】
- 3. Laravel6系でゲストログイン機能(かんたんログイン)の実装
- 4. CodeIgniter4でREST APIを実装する
- 5. 【環境構築】Laravelの初期設定について(Mac版)
- 6. データベースの検索条件をまとめる Database Query クラスを生成する Laravel パッケージ作った
- 7. 【PHP】メソッド内で関数の呼び出し Fatal error: Call to undefined functionエラー
- 8. Laravelで正しくルーティングしているのに404エラーが出る時
- 9. 【PHP学習メモ】class定義のポイント
- 10. 【PHP】【初心者】in_arrayを正しく使うために
- 11. 【初心者】【PHP】strlenとmb_strlenを勘違いした話
- 12. phpの仕様メモ
- 13. laravel DBファサードのstatementメソッドが書いてある場所を探してみた
- 14. ※学習用メモ デザインパターン:Singleton編[PHP]
- 15. phpの比較演算子「==」は予想外の動きをするで!比較は「===」を使おう
- 16. PHPでデータベースにアクセスする方法
- 17. PHPをvscode remote containerで開発したかった
- 18. 【PHP学習メモ】preg_match 定数の指定
- 19. dockerに苦労した話
- 20. 型宣言についてまとめる
MAMPでのtimezone設定
#はじめまして
プログラミングの初学者ですが、学習する際につまずいたことや間違えてしまったことなどを、Qiitaにまとめていこうと思います。同じように失敗してしまう方の参考になれば幸いです。
##PHP+MySQL入門講座
プログラミングの学習には、主にUdemy を使用しています。最近では、たにぐちまことさん(@seltzer)の動画を見てPHP やMySQL、WordPressについて学習しています。初めに、WordPress開発マスター講座を受講し、初学者にも分かりやすく説明が丁寧でしたので、別の講座も受講することにしました。それが、【PHP】標準入力からの繰り返し【メモ】
# 自分用のメモです。
paizaのPHP基礎問題。“`php
Laravel6系でゲストログイン機能(かんたんログイン)の実装
#はじめに
本記事では、ログイン時に`ユーザー名`や`パスワード`を入力しなくても、
ワンクリックでゲストユーザーとしてログインできる**「ゲストログイン機能」**の実装方法をご紹介します。転職活動用のポートフォリオ等にゲストログイン機能があると
多忙な採用担当の方の負担が減り、アプリを利用してもらえる確率が高まりますよ!#事前準備
ゲストログイン機能の実装の前に、以下が予め準備されていることが前提となります。
①ログイン機能の実装されている
②ゲストログイン用のユーザー(ゲストユーザー)の登録されている
→ 例)ユーザー名:`ゲストユーザー`
メールアドレス:`guest@guest.com`
③DBにusersテーブルがあり、passwordカラムが定義されている
④Userモデルが作成されている#実装内容
ログイン機能とゲストユーザーの準備ができたら、いよいよ実装に入ります。
ご紹介する実装内容は割と簡単で、以下になります。– ゲストログインの処理を記述(Controller)
– ルーティングの設定(web.php等)
– ログイン画面
CodeIgniter4でREST APIを実装する
CodeIgniterに入門した。CodeIgniter4の公式Tutorialをやった後、REST APIの実装を試みた。調べてみると、CodeIgniteでREST APIを実装するなら、Rest_Controllerらしい。composerでインストールしてみたが、動かず。
結論、RestControllerはCodeIgntier3用。CodeIgniter4はサポートしていない。
CodeIgniter4にはResourceControllerなるREST API用のControllerが標準で用意されているので、そっちを使うべしということだと思われる。
詳しい説明を書いてくださっている[サイト](http://blog.a-way-out.net/blog/2020/12/20/codeigniter4-rest-api/)を発見。
# 参考にしたサイト
– [CodeIgniter4の公式Tutorial](./https://codeigniter.com/user_guide/tutorial/index.html)
– [CodeIgniter Rest
【環境構築】Laravelの初期設定について(Mac版)
#まずはLaravelでプロジェクトを作成する
①Applications/MAMP/htdocs下でlaravelプロジェクトを作成
下記コマンドによって基本的な雛形は作られる。“`csharp:Applications/MAMP/htdocs
$ composer create-project “laravel/laravel=6.*” todo_app
“`
実行すると開発に必要な雛形がインストールされていく。
(イメージは下記の通り。長文になるので初めだけ記載)“`csharp
Creating a “laravel/laravel=6.*” project at “./todo_app”
Installing laravel/laravel (v6.20.0)
– Installing laravel/laravel (v6.20.0): Downloading (100%)
<以下省略>
“`
②簡易サーバーを立ち上げ、念の為動作確認“`csharp:todo_app
$ php artisan serve
Laravel developm
データベースの検索条件をまとめる Database Query クラスを生成する Laravel パッケージ作った
## はじめに
タイトルのとおりではあるのですが、[laravel-database-queries](https://packagist.org/packages/imunew/laravel-database-queries) というパッケージを作ってみました。ソースコードは[こちら](https://github.com/imunew/laravel-database-queries)です。
`composer require imunew/laravel-database-queries`で導入できます。## 動機
`Laravel`には、[Global Scopes](https://laravel.com/docs/8.x/eloquent#global-scopes) という仕組みがあり、検索条件をひとつのクラスにまとめることができます。
`Scope`クラスは、`Illuminate\Database\Eloquent\Scope`インターフェイスを`implements`し、`apply`メソッドを実装するだけのシンプルなクラスです。“`php
name
【PHP】メソッド内で関数の呼び出し Fatal error: Call to undefined functionエラー
メソッド内で関数を呼び出そうとすると、「Fatal error: Call to undefined function…(未定義の関数を呼び出そうとしている)」というエラーになります。
“`.php
//Fatal error: Call to undefined function…
class Example
function a(){
echo ‘Hello’;
}
function b(){
a();
}“`
メソッド内で異なるメソッドを呼び出す場合は、「$this->メソッド名()」と明記するとエラーを解決できます。
“`.php
class Example
function a(){
echo ‘Hello’;
}
function b(){
$this->a();
}“`
Laravelで正しくルーティングしているのに404エラーが出る時
#原因
**public以下に同名フォルダやファイルがある(場合がある)。**Laravelでは実在するディレクトリへ優先的にアクセスされるので、
“` php
Route::get(‘/dir/file’, function () {
return view(‘dir.file’);
})->name(‘dir.file’);
“`
このようにルーティングしておき、`https://domain.com/dir/file`へアクセスするとき、`/public/dir/`というディレクトリが存在していると、
`/public/dir/file`という**実在するファイル**を探しに行ってしまう模様。
当然、`file`などという実ファイルは設置していないので404エラーになる。#解決方法
・public以下の同名フォルダやファイルを削除またはリネームする
・競合しないPATHに変更する#あとがき
一部のURLだけ404になる場合などは、上記のような原因が多いと思います。「Laravel 404 route」などで検索しても、次のような原因のものばかりだ
【PHP学習メモ】class定義のポイント
class定義、難しいですよね。
まだまだ綺麗なコードには程遠く、コツコツコードを書く日々です。
今回は、class定義のポイントを箇条書きでまとめました。
初学者故に間違いやツッコミどころがあるかもしれません。
ご意見やご指摘がありましたら、お気軽にコメントを頂けましたら幸いです。【class定義のポイント】
・変わらない値は定数にする。
・定数を多数設定する場合は、項目毎で改行すると見やすい。
・メソッド内で、echo・改行しない。
・1つのメソッドには、1つの機能を持たせる。
・重複する処理はまとめる。
・プロパティに設定するのは、モノが持っている情報。
・外からアクセスする必要のないものは、privateにする。
・ずっと同じ値を扱う場合は、コンストラクタで設定する。
・プロパティの値を上書きするようなことは、コンストラクタ以外では、できる限りやらない。
【PHP】【初心者】in_arrayを正しく使うために
##軽い気持ちで使うと怖いin_array
PHPのin_arrayという関数はご存知でしょうか。
値と配列を比較して、配列の中に値が入っていればtrue、入っていなければfalseを返す関数です。
軽い気持ちで使って渋い思いをしたので、自分への戒めも含めた投稿です。##かんたんにまとめると
in_arrayの第3引数に* true を入れると演算子===での比較
* false もしくは なにも入れないと演算子==での比較##試してみると
それぞれの演算子の比較がどう違うのかは[ここ](https://www.php.net/manual/ja/types.comparisons.php)を確認しましょう。
そちらのページの「==による穏やかな比較」という項目にて“`php
“PHP” == 0
“`
これがtrueとなることが確認できます。とっても穏やかな比較ですね。つまり、“`php
$array = [“PHP”, “Hoge”, “PHogeP”];
in_array(0, $array);
“`
こうするとtrueになりました。
だから、“
【初心者】【PHP】strlenとmb_strlenを勘違いした話
##結論
初心者が調子づいてきた頃にやりがちだけど、
具体的な言葉で検索しようね、そして説明はよく読もうね! と言う話。##詰まりの始まり
私がPHP開発をしていたある日、処理の中で文字列の文字数カウントが必要になりました。
##「PHP 文字列 長さ」で検索する
すると出てきたのは* 文字列の長さを取得(strlen, mb_strlen) →というまとめ記事
* strlen – Manual – PHP →というPHP公式ページ
* mb_strlen – PHP →PHP公式ページそれを見た素人はこう思いました。
###「ははーん、strlenを使えばいいんだな?」
殴りたくなる思考回路ですが、こんなクソとぼけたゴミがいるのも事実です。**そんな複雑ではない関数だろう**と思い込み、
公式の説明など読まないままstrlenを自分が作成していた処理に当て込みました。##一向に想定とは違う動きをするstrlen
“`php5
strlen(‘あいうえお’);
“`
5を返すはずのこの関数、“`php5
int(15)
“`
一向に3倍の文字数を返すの
phpの仕様メモ
phpの変数名は大文字小文字を区別する
laravel DBファサードのstatementメソッドが書いてある場所を探してみた
# 目的
– DBファサードのstatementメソッドを使用する機会があり当該メソッドは内部でどのような処理をしているのか気になりまずはメソッドが記載されている場所を探してみた
# 環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |– ソフトウェア環境
| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.8 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする](https://qiita.com/miriwo/
※学習用メモ デザインパターン:Singleton編[PHP]
# Singletonパターンとはどういうものか
Singletonとは**一つのもの**という意味です。
>Singleton パターンとは、そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのことである。(wikipediaより)
ポイントとしては、**指定したクラスのインスタンスが1つしか存在しないことを保証する**ということです。
インスタンスの状態を保持したかったり、クラス間で共通のメソッド・プロパティにアクセスしたい場合に使用されることが多いです。
# Singletonパターンを用いるメリット
・同一インスタンスを使いまわすので、インスタンスの状態を保持したまま他の箇所で使用できる
[参考]
https://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
https://qiita.com/shoheiyokoyama/items/c16fd547a77773c0ccc1
https://www.techscore.com/tech/Desig
phpの比較演算子「==」は予想外の動きをするで!比較は「===」を使おう
### 比較演算子「==」は型変換を自動で行ってしまう。
型の扱いが非常に曖昧であることで有名なPHPでは、他の言語と同じく「==」を使って比較を行うと、**型変換を勝手に行って比較**を行ってしまいます。https://www.php.net/manual/ja/language.operators.comparison.php
“`
PHPでデータベースにアクセスする方法
PHPでデータベースにアクセスするコードを書き留めておきます。
##まずは接続のセットアップをします
“` PHP
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
//例外処理対応を有効にする
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERR
PHPをvscode remote containerで開発したかった
はじめLaravel入れていたが、template的に使えるものが欲しかったので作った。
https://github.com/moeyashi/template-php-on-vscode-remote-container
Laravel入れたバージョンも作ろうかなと思います。
## 2020-01-02 追記
Laravel入れました。勢いあまってlaravel/ui authまで入った。
https://github.com/moeyashi/template-laravel-on-vscode-remote-container
【PHP学習メモ】preg_match 定数の指定
あけましておめでとうございます。
あっという間に2021年ですね。
善き一年になりますように。【今日の学び】
preg_match は、正規表現によるマッチングを行うことができます。““
【構文】
preg_match ( string $pattern , string $subject [, array &$matches = null [, int $flags = 0 [, int $offset = 0 ]]] ) : int|false
““
引数 $pattern には、検索する文字列を、 $subject には、検索対象の文字列を、[] 部分はオプションで省略可能です。〜PHPマニュアル〜
https://www.php.net/manual/ja/function.preg-match.php今回学んだのは、検索する文字列に、『定数』を指定する方法です。
““
・・・省略・・・
// 定数
const THREE_TIMES_RATIO_DAY = 3;
const FIVE_TIMES_RATIO_DAY = 5;・・・省略・・・
dockerに苦労した話
# 今回の教材
[Laravelでテスト駆動開発を学ぼう!](https://www.techpit.jp/courses/92)# 課題に取り組む前にLaravelのMigrateで沼にハマる
## Reset
docker desktop のアンインストール
スタート -> 設定 -> アプリ(ふつーに消えてくれる)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/aab44340-803a-9af5-8b81-adf328c3831e.png)
explorerで普通に消そうとするとブルースクリーンが出て再起動になり、永遠に消せない(この時代にブルースクリーンなんて久しぶりに見たわ…)。powershell管理者モードでバチンと消すしか無いらしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/b8e2c71b-8b2e-cfe3-1ef6-af13c89
型宣言についてまとめる
これまでしてこなかった型宣言について
公式の内容を纏めて自分なりに解釈してみました。参考: [PHP.net](https://www.php.net/manual/ja/language.types.declarations.php)
#なぜ型宣言をするのか?
そもそもの型宣言とはなにか?
>関数のパラメータや戻り値、 クラスのプロパティ (PHP 7.4.0 以降) に対して型を宣言することができます。 これによって、その値が特定の型であることを保証できます。 その型でない場合は、TypeErrorがスローされます。自分なりに解釈すると
パラメータや戻り値が定義されていることで求めた型以外が参照された場合に
エラーを返すことによって大きなバグになることを事前に防いでいるのかと考えます。
またバグ出た際の原因追求もしやすくなるのかなと思います。わかりやすく言うと
スーパーとかがイメージしやすいのかなと!
お酒コーナーにはお酒をおいてあるのでそこから持ち出したら
もちろんお酒を持っていくことになりますよね!
お菓子コーナーから商品を持ち出したらそれはもちろんお菓子です。