- 1. Laravel9でアプリを作成してみた【ゴミ箱付きToDoリストアプリ】
- 2. コンストラクタインジェクションを紐解く
- 3. 生のPHPでフリマサービスを作る_part1
- 4. 【Smarty】JavaScritpを別ファイルに書くときの読み込みパス
- 5. PHPのビルトインサーバでXdebugを使いVSCodeでデバッグする
- 6. ライブラリで簡単に無限スクロールを実現 JS/jQuery/PHP/PDO/MySQLを使用して
- 7. Laravel × デプロイのまとめ
- 8. 【PHP】$_POSRで送信するためのチートシート
- 9. 【PHP】requier_oneceのパスについて
- 10. 配列などなど
- 11. エンジニアインターン5日目
- 12. 【Laravel】同値チェックのバリデーション
- 13. PHPを基本からまとめてみた【環境構築】
- 14. 負荷テストする時大量データ作成プロシージャ
- 15. Laravel9でつまずいたところ
- 16. [WIP] PHP でデータベースに接続する PDO
- 17. 【doctrine】Specを使用してデフォルトで条件の入ったdoctrineのオブジェクトを出力したい
- 18. WSL2でのLaravel開発の流れ(自分用メモ)
- 19. 【初心者向け】PHP の コンストラクタ について
- 20. コンストラクタとは?
- 21. 値の真偽の判定とfilter_var関数
Laravel9でアプリを作成してみた【ゴミ箱付きToDoリストアプリ】
## ファイル構成
“`
docker-config
├─ mysql
├── data //データの保存
└── my.cnf
├─ nginx
├── Dockerfile
└── default.conf
├── php
├── Dockerfile
└── php.ini
“`## 参考サイト
[【シンプル解説】Laravel9でゴミ箱付きToDoリストアプリを作る](https://www.youtube.com/watch?v=HHHN76dHrv0&t=1144s)
コンストラクタインジェクションを紐解く
# コンストラクタインジェクションとは
**依存先のモジュールを自ら生成せずに、コンストラクタの引数としてもらうようにすること**です。
はい。イメージつきにくいですよね…。
# コンストラクタインジェクションしていない例
Carクラス内で、Engineクラスのインスタンスを作成しています。
“`php
class Car
{
private $engine;public function __construct()
{
$this->engine = new Engine();
}public function move()
{
$energy = $this->engine->run();
}
}
“`# コンストラクタインジェクションしている例
Carクラス内で、Engineクラスのインスタンスは作成していません。
引数としてEngineクラスのインスタンスを受け取っています。“`php
class Car
{
private $engine;
生のPHPでフリマサービスを作る_part1
## フリマサービス作成の流れ
1\.機能を洗い出す
2\.画面設計(今回はPHPの深掘りがメインなので割愛します)
3\.テーブル設計
4\.クラス設計
5\.実装### 機能を洗い出す
**今回の作るフリマサービスの機能は以下の通り**
– ユーザー登録
– ログイン
– ログアウト
– 退会
– プロフィール登録
– プロフィール編集
– パスワード変更
– パスワードリマインダー
– 決済(余裕があれば)
– コンテンツ登録
– コンテンツ編集
– コンテンツ削除
– コンテンツ一覧表示
– コンテンツ詳細表示
– コンテンツ検索
– コンテンツ毎の掲示板表示
– コンテンツ毎の掲示板へのメッセージ登録
– お気に入り登録### テーブル設計
以下のように設計する
![スクリーンショット 2023-01-22 0.31.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461162/6f8d7e0d-29f0-93a3-5b42-bef4fa9ac15c.png)###
【Smarty】JavaScritpを別ファイルに書くときの読み込みパス
# Smarty使用時にJavaScritpを別ファイルに書くときの読み込みパス
## 発端
* javascriptをjs専用のフィアルに書いてそれをSmartyで読み込みたかったがうまく読み込めずハマったので備忘録。## 原因
* Smartyからのパスを書いていた。## 解決方法
* そのテンプレートファイルを呼び出しているPHPからのパスを書く。## 詳細
* ディレクトリ構造
“`
test–
|-layout
| |_resource
| | |_javascript.js
| |_layout.tpl
|
|-module
| |_module.php
|
|-template_c
“`
* module.phpでlayout.tplを読んで画面に表示させているとき、layoutに記述したinputタグの内容についてjavascriptで処理をしたいとする。“`html:layout.tpl
PHPのビルトインサーバでXdebugを使いVSCodeでデバッグする
# Install
– [phpインストール](https://qiita.com/yuki777/items/c8e33ca3290b55862c6a)済みであることを前提としています
– [VSCode拡張のPHP Debug](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug)をインストールする。# php.ini
“`
; php –ini でphp.iniもしくはxdebug.iniを探してくださいzend_extension = “xdebug.so”
xdebug.client_host = 127.0.0.1
xdebug.client_port = “9003”
xdebug.mode = debug
xdebug.idekey = “PHPSTORM”
xdebug.start_with_request = yes
“`# PHPビルトインサーバを起動する
– プロジェクトによりけりだと思いますが、下記のようなphpコマンドで起動します。
– `
ライブラリで簡単に無限スクロールを実現 JS/jQuery/PHP/PDO/MySQLを使用して
jQueryライブラリの infinite-scroll を利用します。
https://infinite-scroll.com/
## HTML, JS
まずはHTMLおよびJavaScriptの部分。注意点としてはloadNext.phpと記述する部分で追加部分を読み込むわけだが、ここにpage=1のような数値が必須である点。その数字を読み込むごとに増やしていく前提でこのライブラリは作られている。ここは自動で増えていく。
そのため、この例のようにpage=1としておけば勝手に次はpage=2として自動で読み込んでくれる。便利なんだが不便なんだか分からんが。
“`timeline.htmlすでに読み込まれているコンテンツすでに読み込まれているコンテンツすでに読み込まれているコンテンツ
Laravel × デプロイのまとめ
初めてのデプロイでつまづきが多すぎたのでメモ
サイト自体はこちら →
https://wp955234.wpx.jp/product
(とりあえずそれらしいものをデプロイしたいだけだったので色々雑い。)
# まずLaravelをデプロイする前に100%初学者が見るべきサイト
いろんなサイトがあるがどれもなぜかエラーが出ない前提だったりSSHなどの接続について触れてなかったりまともにわからないサイトばかり。
最終的にこのサイトにたどり着いた。結論ほぼこの通りにやればよし。https://nebikatsu.com/6604.html/
こちらもよさげ cliborありがとうございます。
https://chigusa-web.com/blog/xserver-laravel/
とてもリンク先が丁寧なのでここからはつまづいた部分とか補足。
# SSH接続
この通りやってTeraTarm入れましょう。https://www.xserver.ne.jp/manual/man_server_ssh_connect_tera.php
# PHPのコマンド実行するPHP
【PHP】$_POSRで送信するためのチートシート
# $_POSTで送信するためには
## 発端
* $_POSTでデータが欲しいがやり方が曖昧だったためまとめる。
【結論】formに“`method=”POST”“`、“`buttonのtype=”submit”“`にしてれば飛ぶ。## 方法
### form内で色々な情報を集めてまとめて送信する場合
“`php:index.php【PHP】requier_oneceのパスについて
# requier_oneceのパスについて
## 発端
* ファイルパスは合っているはずなのに読み込めなくて何度もハマったのでまとめる。## 原因
PHPは、「実行したファイルのあるディレクトリが常に実行時のカレントディレクトリになる」という規則があるためエラーとなってしまっていたっぽい。## 解決策
### “`__DIR__“`もしくは“`dirname(__FILE__)“`を使おう
1. “`__DIR__“`は記入したファイルが所属するディレクトリまでのパスを返してくれる。
“`
test–
|-layout
| |_layout.tpl
|
|-module
| |_module.php
|
|-template_c
“`
“`php:module.php
// layout.tplを読み込みたい場合
// __DIR__には ~/test/moduleまでのパスが入っている
requir_onece(__DIR__.”/../layout/layout.tpl”);
“`配列などなど
今日学んだことのまとめ
■配列
$data[0] = ‘a’;
$data[1] = ‘b’;
$data[2] = ‘c’;
$data[] = ‘d’;echo $data[3];
d
インデックス番号が省略された場合はその時点での最大インデックス+1が割り振られる■シングルクォートとダブルクォートの違い
シングルクォート:変数を”で囲うとそのまま出力される
ダブルクォート:中に変数を書いた場合、変数が文字列に書き換えられる。変数展開もしくは変数のパースというらしい。。。
↓例$title = ‘ラーメン’;
$data1 = ‘今日の昼飯は{$title}だった’;
$data2 = “今日の昼飯は{$title}だった”;echo $data1;
echo “
“;
echo $data2;今日の昼飯は{$title}だった
今日の昼飯はラーメンだったあと今日仕事中のミス
・HTMLの中にPHPは書けるけど、PHPの中にエンジニアインターン5日目
今日は残りのlpのテンプレートを完成させ、サイトに適用させることを目標として取り組んだ。徐々に完成に近づいてきた時sqlで日付指定をして、常に最新の情報を更新するような仕組みを追加する案が出た。gitで新しいissueを作り、ブランチを切り替え、コーディングした。(git branch -b 指定するブランチ)を入力することで、新しくブランチを作ると同時に新しく作ったブランチに切り替えてくれる。自分は最新3ヶ月の情報を得たかったため、betweenを使い、現在から3ヶ月前から現在までの値を得て、1番最新の情報を表示するようにした。コーディングが終わったらgitにpull&requestして先輩エンジニアにレビューしてもらい、細かな部分を修正してやっと日付指定の作業が終わった。テスト環境のwordpressに適用させて行く途中にまた新たに修正しなければならないところが出てきた。フィールドの値が文字列が少し違っていて、データベースに引っかからないということだった。フィールドから引っ張ってきた値をreplaceして文字列を変えてデータベースに渡せば解決できた。この作業も日付指定の時と同じ流れ
【Laravel】同値チェックのバリデーション
# はじめに
確認用の入力でバリデーションがしたく、同値チェックができるもののまとめ# same:フィールド名
指定したフィールドと同じ値であるかどうか
“`PHP
‘name’ => [‘same:confirm’]
“`# different:フィールド名
指定したフィールドと異なる値であるかどうか
“`PHP
‘sub_email’ => [‘different:main_email’]
“`# confirmed
[フィールド名]_confirmationフィールドと同値であるかどうか“`PHP
‘email’ => [‘required’, ‘confirmed’]
“`
入力確認用に使用するものであるが、[フィールド名]_confirmationの存在が必要となる
上記だとemail_confirmationが必要
“`
メールアドレス
メールアドレス(確認用)
“`以上
PHPを基本からまとめてみた【環境構築】
## PHPとは
サーバーサイドのプログラミング言語
## WordPress
ブログを作成するシステム
## MAMPとは
PC上にローカル環境サーバ環境一式をインストールできるツール## 環境構築
ローカル環境構築 ⇨ PCの中にサーバー
公式サイト:[MAMP](https://www.mamp.info/en/downloads/)
Pathの設定
“`
//terminalcd /Applications/MAMP/htdocs/
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -V//プロジェクト作成
composer create-project laravel/laravel <プロジェクト名>
“`“`
brew tap shivammathur/php
brew install shivammathur/php/php@7.4
brew link php@7.4
“負荷テストする時大量データ作成プロシージャ
DROP PROCEDURE `proc_test01`
/
CREATE DEFINER=`homestead`@`%` PROCEDURE `proc_test01`(IN input int(1))
BEGIN
SET @start_idx = 0;
SET @customers_info_id = 100000;
SET @point_card = 7130010000 ;
loop1: LOOP
SET @start_idx = @start_idx + 1;
SET @customers_info_id = @customers_info_id + 1;
SET @point_card = @point_card + 1;
IF @start_idx > input THEN LEAVE loop1;
END IF;# カード会員情報の登録
insert into DB.table1(card_info_id,customers_info_id,asp_card_main_id,asp_card_Laravel9でつまずいたところ
## Laravelスタートの見習いエンジニア
自分が学習していく中でつまずいたところをメモします。まずはMVCの動き方とかを知るために職場の方から教えていただいたこちらのサイトをもとにTODOアプリを作成することにしました。
https://www.hypertextcandy.com/laravel-tutorial-introduction### 環境
Laravel9+Docker+mysql+nginx
PHP 8.1.14
editor: PHPStorm### 今日つまずいたところ
Routingはあっているはずなのに
“`
target class [クラス名] does not exist.
“`
のエラーが表示される・・・### 解決
どうやらLaravel8とLaravel9では動作が違うという
(そりゃそうだよな・・・)### 参考記事
https://biz.addisteria.com/laravel_route_error/
とても助かりました。
先駆者の方でこうしてまとめてくださるのは本当にうれしいこと
ありがとうございます。[WIP] PHP でデータベースに接続する PDO
:::note note
初学者の独り言メモです
PDO について DB への接続・切断、SQL を発行する部分を分けたり、例外処理、プレペアードステートメント、DAO などぼんやり理解したものの本や記事によって異なる関数が使われているのを多く見かけました。プレースホルダの書き方の違いや関数の記述の違い、関数をどう使い分けるのかを知ろうというのが目的です。書き起こしながら理解を深めようと随時加筆・修正していきます。ここで使用するデータベースは MySQL です。 JDBC ドライバ接続についても理解しないと。
:::データベースに接続するための抽象化レイヤーが PHP に用意されています。「PHP Data Objects(PDO)」が用意されています。今回「**PDO クラス**」を使います。
参考:[PDO:PHP – Manual](https://www.php.net/manual/ja/book.pdo.php):::note warn
抽象レイヤーとは何かは後回し
:::**PDO クラス** のインスタンスを生成してデータベースに接続しますが、データベース接
【doctrine】Specを使用してデフォルトで条件の入ったdoctrineのオブジェクトを出力したい
## 環境
php7
Symfony3## そもそもSpecとはなんぞや
[Doctrine-Specification/0-usage.md at 2.x · Happyr/Doctrine-Specification](https://github.com/Happyr/Doctrine-Specification/blob/2.x/docs/0-usage.md)doctrineのクエリよりも簡素に書けるよ―というライブラリらしい。
~~全然慣れない~~## 首題について
“`php
$spec = Spec::andX(
Spec::isNotNull(‘hoge’),
);
“`これだけで済んだ、、、
まあ慣れなんですかね、、、
ジョインして間もないので解決しても腑に落ちないところはある。WSL2でのLaravel開発の流れ(自分用メモ)
自分用の備忘録としてLaravel導入の流れをまとめます。
## 目次
* 環境
* WSLの準備
* Docker Desktopのインストール
* Laravelのプロジェクト作成## 環境
* Ubuntu 20.04
* WSL2
* PHP 7.4.3
* Laravel9## WSLの準備
1. Powershellを管理者権限で実行する。
2. 下記のコマンドを実行する。
“`shell
wsl –install
“`
3. PCを再起動する。
4. 再起動すると ubuntu のターミナルが自動的に立ち上がるのでユーザ名とパスワードを設定する。## Docker Desktopのインストール
1. 下記のURLにアクセスし、ダウンロード -> インストールする。
https://www.docker.com/products/docker-desktop/
2. 完了したら画面の指示にしたがって windows からログアウト → ログインする(再起動でも OK)。### Dockerの動作確認
1. Docker【初心者向け】PHP の コンストラクタ について
こんにちは!
システム開発部の松木です。
今回は オブジェクト指向 の一つ、コンストラクタについて深く見ていこうと思います。コンストラクタとは?
コンストラクタは、クラスをインスタンス化(オブジェクト化)した時に、必ず実行されるメソッドです。通常のメソッドはクラスをインスタンス化した後に、アロー演算子を用いて任意のタイミングで呼び出すことができるが、コンストラクタはインスタンス化するタイミングで、自動的に呼び出されるため呼び出す工程がありません。
▼ ブログ記事の詳細は コチラ から ▼
https://beyondjapan.com/blog/2023/01/php-constructor
***
■ 株式会社ビヨンド
・コーポレートサイト:https://beyondjapan.com
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・Twitter:https://twit値の真偽の判定とfilter_var関数
`$_GET`に格納された値など、PHPには文字列でしか取得できない情報が存在します。
その値を真偽値として扱いたいときには`filter_var`関数が個人的に便利だったので、その他真偽値の判定にまつわる関数とともに出力結果をまとめました。https://www.php.net/manual/ja/function.filter-var.php
例:
“`sample.php
$model = getData($_POST[“id”]);$model->isPublished = filter_var($_POST(“isPublished”), FILTER_VALIDATE_BOOLEAN);
$model->save();
“`## 早見表
| 値 | if($var) | isset($var) | empty($var) | is_null($var) | filter_var($val, FILTER_VALIDATE_BOOLEAN) |
|:-|:-:|:-:|:-:|:-:|:-:|
| true | **true** | **true** |関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた