- 1. 【JQuery,Ajax,PHP】JQueryで非同期通信(簡単な仕組み~コード)
- 2. 【PHP】マイナーフレームワーク「Flow」を試してみる~ファイルダウンロード編~
- 3. 【バックエンド】駆け出しエンジニアが目指すジュニアレベルのエンジニアとは【2024年版】
- 4. PHPでのSQL文の実行時の注意 – 備忘録(´・ω・`)
- 5. LaraveでCSSをresourcesディレクトリ内に配置する
- 6. 備忘録:メール送信機能の実装(Laravel8)
- 7. 【empty()関数】0がnull扱いになる事にハマった
- 8. 三項演算子で条件分岐させる
- 9. Laravel10 + Inertia + vue3で動的な多言語機能の実装
- 10. PHP 値の送信と受け取りをしてみる
- 11. PHP 別のファイルの読み込み
- 12. PHP オブジェクト クラス
- 13. 【Laravel Sail】ubuntuでsail upコマンドが実行できない場合
- 14. 【Laravel】変数の値を確認する方法
- 15. Laravel Eloquent 不要なデータは取得しないようにしよう!
- 16. vscodeでDocker上のXdebug2を動かす
- 17. 今までの業務にて経験したこと
- 18. 【PHP/Slim4】3.軽量フレームワーク(Slim4-skeleton) Twig
- 19. 【2024年版】LaravelでIntervention Imageを使う方法
- 20. PHPでMySQLデータベースに接続
【JQuery,Ajax,PHP】JQueryで非同期通信(簡単な仕組み~コード)
ajaxを実装しようとしたのですが、仕組みからコードまでまとめられているところがなかったため、自分のためにもメモしておきます
参考になれば幸いです# 前提確認
Jqueryはjavascriptの集合
意外とこれを勘違いしている方もおおいのではないかなと思いました
余談ですが、私もはじめのころは勘違いしていました、、、# そもそもAjaxって?
Asynchronous JavaScript + XMLの略
Asynchronous:非同期
だから、簡単に言うと
「JavaScriptを使って非同期通信を行う仕組み」# もう少し詳しく
Javascriptの特徴
基本的にメインスレッドで実行される
(メインスレッドでは、javascriptの処理の他に画面のレンダリングなども行っている)
+ 同期処理
サーバーにリクエストを送ったら、レスポンスが返ってくるまで次の処理はできない
(メインスレッドで処理がされるため)
+ 非同期処理
サーバーにリクエストを送ってレスポンスが返ってきていなくても、画面上での別の操作ができる
(リクエスト処理を一度バックグラウンドに移す(
【PHP】マイナーフレームワーク「Flow」を試してみる~ファイルダウンロード編~
# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/f06f40bf8e1159eff80d)の記事でファイルのアップロードについてをまとめました。
今回はFlowを用いてファイルダウンロードの実装方法についてまとめます。# 事前知識
この記事はFlowにおける基本的なDB操作ができることを前提に記載しています。
以下の記事を読んでから読むことをおすすめします。
[【PHP】マイナーフレームワーク「Flow」を試してみる~API作成編~](https://qiita.com/nnhkrnk/items/2b9f647d6130a098345f)
[【PHP】マイナーフレームワーク「Flow」を試してみる~DB接続&データ登録編~](https://qiita.com/nnhkrnk/items/739ac12036c858525e23)また、この記事は以下の記事の続きです。
[【PHP】マイナーフレームワーク「Flow」を試してみる~ファイルアップロード編~](https://qiita.com/nnhkrnk/items/f06f40
【バックエンド】駆け出しエンジニアが目指すジュニアレベルのエンジニアとは【2024年版】
# はじめに
こんにちは。
普段はフロントエンドの開発をメインでやっておりますmamiと申します。
最近バックエンドの方の勉強や、少しずつですがDB設計やAPI作成などの業務もやらせてもらえるようになったので、自分のエンジニアとしてのレベル感や、この先目指すべき道筋を明確にしたいな〜という思いでこの記事を書いております。これは自分のための記事であると同時に、同じように駆け出し中のエンジニアさんや、ミドル層を目指す手前のエンジニアさんにも刺さる内容になっているかと思います。
今、**自分がどのようにキャリアアップしていく**べきなのか、どのような道筋で**スキルを磨いていけばいい**のか。そんなふうに悩んでいる方は是非読んでみてください。※内容はバックエンドエンジニアが対象になりますが、フロントエンドの方もなにか通じるものがある…かもしれません。
ちなみにですがフロントエンドの方の記事は下記で執筆していますので、興味のある方はぜひ読んでみてください。https://qiita.com/mamimami0709/items/c9657367a8e7dfdca070
#
PHPでのSQL文の実行時の注意 – 備忘録(´・ω・`)
# 何この記事
その名の通り備忘録。
みんなが知っているSQLインジェクション対策で同じように間違えないように、、、
# 短い本編
初心者と経験者と分けて説明します。
今回使うテーブルにはサザエさん一家を使います。
テーブル名:Family
| ID | Name |
|:-|:-|
|1|フグ田サザエ|
|2|磯野波平|
|3|磯野フネ|
|4|フグ田マスオ|
|5|磯野カツオ|
|6|フグ田タラオ|
|7|磯野ワカメ|
|8|タマ|### 初心者
PHP触りたてほやほやの人が書きそうな文
“`PHP
$ID = 1;
$sql = “SELECT*FROM `Family` WHERE ID = ‘” . $ID . “‘;”;
$stmt = $dbh->query($sql);
“`
おや?SQL文が簡単そうですね。では、実行してみましょう。
#### 結果
| ID | Name |
|:-|:-|
|1|フグ田サザエ|IDが1の人がヒットしました。さて、皆さんはお気づきかもしれませんが、この文では攻撃が簡単にされてしまうんです。
では、攻撃をしてみましょうw
`
LaraveでCSSをresourcesディレクトリ内に配置する
# はじめに
今まで’***public/css***’ ディレクトリ内に配置していたが、’***resources/css***’ ディレクトリ内に配置する方法をまとめる# 開発環境
Laravel 8
Node.js# ‘***public***’ と ‘***resources***’ ディレクトリの違いについて
| ディレクトリ名 | 説明 |
|:-|:-|
| public | 外部から直接アクセス可能なファイルを格納するための場所 |
| resources | アプリケーションのリソースやソースコードを格納するための場所
Laravel Mixなどのビルドツールを使用して最終的な成果物が ‘***public***’ ディレクトリに配置される |# Laravel Mixの設定
‘***webpack.mix.js***’ ファイルを編集し、どのCSSファイルをコンパイルし、どのJavaScriptファイルをバンドルするかを指定する
“`JavaScript:webpack.mix.js
mix.js(‘resources/js/app.js’,’
備忘録:メール送信機能の実装(Laravel8)
## はじめに
備忘録として、メール送信機能の実装方法についてまとめた## 開発環境
Laravel 8
Laravel-permission
※宛先判定のため、Laravel-permissionパッケージを導入## 実装したいこと
ブラウザ上で送信したい本文を入力し、指定する宛先に送信する## 環境構築
**.env**ファイルにメールサービスの設定を追加する。
“`php:.env
#Gmailを使用する例MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=from@example.com
MAIL_FROM_NAME=”${APP_NAME}”
“`## Markdown Mailableクラスの作成
*Mailable*クラスを作成
同時に*Markdown*を使用することを指定する
“`ph
【empty()関数】0がnull扱いになる事にハマった
# きっかけ
ハマったので簡単なコードでまとめる
実際には以下のようなテーブルでプルダウンを作って検索処理を実装した時に起きた
| 有効 | 無効 |
|—-|—-|
|0|1|
# 状況
プルダウンでりんごを選択した時に検索出来ない
“`php
“`
# 原因
empty()関数で0はnull扱いだった
りんごを選択した時、以下の条件式ではfalseになるため検索がかからなかった
“`php
if(!empty($all[“fruit”])){
}
“`
# 解決策
ひとまず以下の条件式で動いたがvalueの値に0を使わないほうがよかったかも
“`php
if($all[“fruit”] !=
三項演算子で条件分岐させる
## はじめに
「依頼を探す」ページが表示される時は依頼の検索機能が、そして「提案を探す」ページが表示される時には提案の検索機能が・・・
といったように、表示されるビューによって処理の内容を変えたい時は「三項演算子」を使うのが良いそうです。
https://www.php.net/manual/ja/language.operators.comparison.php#language.operators.comparison.ternary
> 『(expr1) ? (expr2) : (expr3) という式は、式1 が true の場合に 式2 を、 式1 が false の場合に 式3 を値とします。』(PHP公式ドキュメントより)
## 環境
PHP 8.2.7
Laravel 9.52.16## 問題
* 検索フォームを実装しようとしている
* 提案・依頼の両方を検索できるようにしたい
* つまり、表示するビュー次第でルートを分岐させたい“`php: commons.search_form.blade.php
{{– 今はまだ依頼の検索しかできないが、
Laravel10 + Inertia + vue3で動的な多言語機能の実装
# 概要
laravelで動的な言語切り替えを実装しようとした際に情報があまり出ていなかったので備忘録も含めて実装のマニュアルを残そうと思いました# 必要なものをインストール
### コマンド一覧
**多言語対応初期設定**
バックエンド側
`composer require laravel-lang/common –dev``php artisan lang:publish`
vue側
`npm i laravel-vue-i18n`**対応言語一覧**
https://github.com/drobee/Laravel-lang/tree/master/json# 実装
### Laravel側
“`php:/app/config/languages.php
‘English’,
‘ja’ => ‘日本語’,
‘vi’ => ‘Tiếng Việt’,
‘zh-CN’ => ‘汉语’,
‘tr’ => ‘Türkçe’,
‘ar’ => ‘اللغة العربية
PHP 値の送信と受け取りをしてみる
## はじめに
PHPといえば値の入力フォームに入力した値を送信し、別で受け取ります。勉強していることのまとめなので完璧ではありません。参考程度にお願いします。## 値の送信
“`php
//Post.php“`
method=”get”はurlの後に値を付与します。
method=”post”はurlから見えません。## 値の受け取り
値の受信にも色々ありそうですが今回は以下のやり方でやります。多分別は$_GETを使うものです。
“`php
//Get.php
“`
フォームから送信された値の取得にはfilter_inputを使
PHP 別のファイルの読み込み
## はじめに
クラスや関数など書いた外部ファイルを読み込んで使うことがあります。自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。## requireかincludeで読み込む
同じフォルダ内にあるclass.phpというファイルを読み込んでいきます。
“`php
require(‘class.php’); //ファイルが読み込めなかったらその場で処理が止まる
include(‘class.php’); //ファイルが読み込まなくても処理が止まらない
“`
以下のような少し違う処理の書き方もあります。
“`php
require_once(‘class.php’); //ファイルを一度だけ読み込む
include_once(‘class.php’); //ファイルを一度だけ読み込む
“`
ぶっちゃけ_onceがどのように活躍するかわかりませんが、覚えておきます。## 一応少しだけパスの書き方
今度自分が見返すようにサンプルパスを少し書いておきます。
“`php
require(‘class.ph
PHP オブジェクト クラス
## はじめに
PHPのオブジェクトです。何年か前にpythonで少しやった気がします。自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。##クラスの定義
クラスはclass クラス名で定義します。
また、クラス名は大文字スタートです、
“`php
class Client{
}
“`プロパティとメソッド、定数を定義していきます。
“`php
class Client{
public $number;
public $name;
public const VERSION = 1.0;public function info(){
printf(‘顧客番号->%d、顧客名->%s’ . PHP_EOL, $this->number, $this->name);
}
}
“`
このthisってのがインスタンスのことって考えると覚えやすかったりした気がしてきたりします。
また、以下のように記述することでプロパティの型の指定が可能です。普通の書き方
【Laravel Sail】ubuntuでsail upコマンドが実行できない場合
## きっかけ
Laravel Sailで`sail up -d`というコマンドを実行すると、以下のようなエラーが出る。
“`
docker is not running
“`## 対処法
**Windows**の場合、先に以下のコマンドを実行する。
“`
sudo chmod 666 /var/run/docker.sock
“`
※ubuntuにログインした後に、上記コマンドを実行する。
【Laravel】変数の値を確認する方法
## dd関数を使用する
`dd(変数名);`と記述すると、ブラウザに変数の値が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/d5eda7ca-3593-0fd0-b3a5-f3e907947c0e.png)## 参考サイト
https://biz.addisteria.com/laravel_debug/
Laravel Eloquent 不要なデータは取得しないようにしよう!
現在、Laravelの使用経験が半年を越えた学生エンジニアです。
Laraelには非常に便利な「Eloquent ORM」という非常に便利な概念が存在します。
主に以下のような解釈ができると思います。1. SQLの簡略化
1. データベースへのインターフェースざっくりとご説明したいと思います。
## 「Eloquent ORM」と「Model」
LaravelはMVCモデルと呼ばれています。**Model View Controller**の略です。
1. Modelを用いてテーブルからデータ取得
1. Controllerを用いてデータを処理
1. Viewで処理されたデータを表示上記の流れで運用されるためです。(厳密にはもっとたくさんありますが!)
上記の1の工程がModelですが、
**Eloquent ORM と Modelはほぼ同義と考えて構いません**では実際に効率的に書いていきましょう!
## なるべく不要な値を取得しない
“`
$attendances = Attendance::all();
“`
まず、Atten
vscodeでDocker上のXdebug2を動かす
# 概要
VscodeでXDebug2を使うための設定を行いました。
Dockerを使っています。※macでの確認はしていません。
githubのリポジトリは以下の通り。
https://github.com/RYA234/php-xdebug2-docker-vscode
# 開発環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/578a9062-15f0-1e2d-0be4-c0e0102bcfba.png)
名称|バージョン|説明
—|—-|—-
Docker|24.0.6|コンテナ型仮想環境
Windows|10|OS
XDEBUG|2.2.5|PHP用のデバッグ用の拡張機能
VSCODE|1.85.1|IDE
PHP Debug|1.34.0|VSCODEでXdebugを使えるエクステンション。# dockerの起動方法
“`bash
# dockerコンテナをビルドする
docker-compose build# do
今までの業務にて経験したこと
広く浅く今まで触れてきたが、これよりは深く利用するようにキャリアを積んで行く予定。
# プログラミング言語
1. C
組み込み開発プロジェクトの際に利用
1. C#
デスクトップアプリの開発プロジェクト時に利用
1. HTML,CSS,JS,PHP
Webサービス開発プロジェクト時に利用# 開発ツール
1. eclipse
1. Visal Studio
1. PhpStorm
1. Visual Studio Code# ツール
1. Redmine
1. Redmine
1. Backlog※本内容について後日更新を予定しています。
【PHP/Slim4】3.軽量フレームワーク(Slim4-skeleton) Twig
## やりたいこと
Slim4のテンプレートエンジンを使ってみる
Twigがメジャーっぽいので、なんとなくTwigを使ってみようと思う## Step1.サンプル環境の構築
[前回の記事を参照](https://qiita.com/miyaken3381/items/a63f70b65a01c8b77225)## Step2.Twigのインストール
プロジェクトフォルダに移動後、以下のコマンドを実行
~~~js
composer require slim/twig-view
~~~## Step3.Twigの依存関係を設定
dependencies.phpにTwigの依存関係を注入する
またsettings.phpでパス等の設定を切り替えられるようにしておく
#### app/settings.php
~~~php
return function (ContainerBuilder $containerBuilder) {// Global Settings Object
$containerBuilder->addDefinitions([
【2024年版】LaravelでIntervention Imageを使う方法
## 概要
PHPの画像処理ライブラリである**Intervention Image**の**バージョン3**を**Laravel**で使う方法について解説します。
先日、Qiitaの質問で「Intervention Imageがエラーで使えない」というものがありました。私も使ったことがあるので調べてみたのですが、どうやら2023年12月にバージョン2から3へアップデートされたようです。そして、それによって「Laravel Intervention Image」といったキーワード検索でヒットする記事の情報では導入できなくなってしまったので、この記事を執筆することにしました。
https://image.intervention.io/v3
## Intervention Imageのバージョンアップについて
https://image.intervention.io/v3/introduction/upgrade
上記のアップグレードガイドを参照すると、次のように記載されています。
> Intervention Image 3 は、以前のバージョンから引き継がれたコードが
PHPでMySQLデータベースに接続
# PHPでMySQLデータベースに接続
### プリペアードステートメントとは
実行したいSQLをあらかじめ用意して、可変となるパラメーターは後から渡す仕組み– プリペアードステートメントでパラメーターを可変にして名前で検索する場合
“`php:sample.php
“山田”)// プリペアードステートメント
$stmt = $pd