- 0.0.1. 【速習】LaravelとPHPブートキャンプ Part3 – QuickNetwork開発部
- 0.0.2. 【速習】LaravelとPHPブートキャンプ Part2 – QuickNetwork開発部
- 0.0.3. Zabbix Server 6.2.9のWebコンソールセットアップ時に、PHPのエラー(AH01071)「Trying to access array offset on value of type null in ~~/CCookieSession.php」が発生
- 0.0.4. 【Laravel】ajaxで非同期処理
- 0.0.5. 【PHPUnit】PHP のテストファイルを一括で全部実行したい
- 0.0.6. [Laravel 11]Artisanコマンドをカスタムしてしまおう[tips]
- 0.0.7. 【AWS初学者向け】EC2にアプリケーションをデプロイ
- 0.0.8. 【PHP備忘録】 WordPress関数:”Undefined function”エラー対処法
- 0.0.9. Laravel Eloquentのupdateの挙動がどうもうまくいかない
- 0.0.10. 一体全体、PHPで配列をどう扱えばいいのか?(配列を扱うニッチなスキルを含む)
- 0.0.11. PHPでデータベース操作の基本
- 1. はじめに
- 1.1. データベース接続
- 1.2. SELECT
- 1.2.1. PHPのセッションを安全に破棄する方法(超個人用覚書)
- 1.2.2. HumHub公式マニュアルを読む(Database Models)
- 1.2.3. PHP8から追加された新機能「nullsafe演算子」を活用しよう
- 1.2.4. Laravel Eloquentで親テーブル小テーブル共に検索対象にする方法
- 1.2.5. 1.DOCKERを理解したい – 1day
- 1.2.6. 【PHP】mt_randの精度を調べてみた
- 1.2.7. Yii2フレームワークのエントリスクリプトを理解する。
- 1.2.8. [PHP] xmlを読み込み、連想配列に格納する
- 1.2.9. Laravel インストール
【速習】LaravelとPHPブートキャンプ Part3 – QuickNetwork開発部
### 通知とイベント
新しいChirpが作成されたときにメール通知を送信して、Chirperを次のレベルに引き上げましょう。
“`
php artisan make:notification NewChirp
“`メール送信のサポートに加え、Laravelは、メール、SMS、Slackを含む様々な配信チャネルでの通知送信をサポートしています。さらに、コミュニティが構築した様々な通知チャネルが作成されており、数十の異なるチャネルで通知を送信することができます!通知はデータベースに保存され、Webインターフェースに表示されます。
### 通知の作成
Artisanが用意した以下のコマンドで、通知に関するすべての大変な作業を実行してくれます。
`php artisan make:notification NewChirp`
これで、app/Notifications/NewChirp.phpに新しいnotificationが作成され、カスタマイズできるようになります。
NewChirpクラスを開き、作成されたばかりのChirpを受け取れるようにし、メッセージをカスタマ
【速習】LaravelとPHPブートキャンプ Part2 – QuickNetwork開発部
### Artisan Tinker
Laravelアプリケーションで任意のPHPコードを実行できるREPL(Read-eval-print loop)、Artisan Tinkerについて学ぶ絶好の機会です。
コンソールで、新しいTinkerセッションを開始します。
“`
$ php artisan tinker
“`次にデータベースのChirpを見るための次のコードを実行しましょう。先ほどフォームから入力したメッセージが追加されているはずです。
“`
App\Models\Chirp::all();
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821455/76916019-28ba-9cc4-d52d-a7882ccadd35.png)exitコマンドもしくはquitコマンド、Ctrl+CでTinkerを抜けることができます。
## Chirpsを表示
前のステップでは、Chirpを作成する機能を追加しました!
### Chirpを取得する
Zabbix Server 6.2.9のWebコンソールセットアップ時に、PHPのエラー(AH01071)「Trying to access array offset on value of type null in ~~/CCookieSession.php」が発生
## はじめに
自宅PCのVirtual BoxにOracle Linux 8.10を構築したのち、
下記のサイトを参考にZabbix Server 6.2.9をインストールしました。– [【ZABBIX】Oracle Linux 8 へ ZABBIX6.2 をインストールする](https://www.startpassion.life/entry/2022/09/04/231501)
– [監視ツール「zabbix-6-4」を構築してみました!](https://ひとりでできるもん.com/2023/12/26/%E7%9B%A3%E8%A6%96%E3%83%84%E3%83%BC%E3%83%AB%E3%80%8Czabbix-6-4%E3%80%8D%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%81/?cn-reloaded=1)そして、ブラウザからWebコンソールをセットアップしようとしたのですが、
表題のエラーが発生し解決まで結構時間
【Laravel】ajaxで非同期処理
## やりたいこと
Laravelで作成した記事投稿アプリなどにおいて、ユーザーが記事をいいねした際に画面遷移や更新などの同期処理ではなく非同期で反映させたい(ユーザーが一つの記事対していいねできるのは一回までにする)## Table
likesテーブルのmigration
likeがuserとarticleに紐付き、user,articleとlikesが一対多の関係
“`php
class CreateLikesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘likes’, function (Blueprint $table) {
$table->increments(‘id’);
$table->integer(‘user_id’)->foreign(‘user_id’)->r
【PHPUnit】PHP のテストファイルを一括で全部実行したい
# はじめに
PHP でテストファイルを複数作って、それを一つずつ実行するのがめんどくさかったので、テストファイルを一括で実行できるクラスのメモ。
IntelliJ で実行する前提なので、実行ファイルはないです。
パスの指定は各々気をつけましょう。# 継承したクラスのメソッドを全部実行
メソッド実行なのでテスト結果が 1 つにまとめられてしまう。
テストじゃなくて別の使い方とかで応用できそうだなとか思ったり。“`php
[Laravel 11]Artisanコマンドをカスタムしてしまおう[tips]
## はじめに
こんばんは、ゆきおです。
なんとなく思い付きでArtisanコマンドを作ってみたくなりました。
LaravelといえばADR(Action,Domain,Responder)というアーキテクチャが有名です(多分
コントローラー層を3つに分割したやつですね。
なので「make:controller」ならぬ「make:adr」を作ります。今回は前回の記事の環境をそのまま使っちゃうのでSailコマンドになっています。
バージョンはデフォルトのLaravel11で作りました。
いかんせんLaravelが久しぶりでうろ覚えの中GPTで作ったので足りない部分もあるかもしれませんが参考までにどぞ。## コマンドを作成する
Artisanコマンドを作成するにはArtisanコマンドを作成するためのArtisanコマンドを入力します(?)
“`php
sail artisan make:command MakeADR
“`
これだけでConsole/Commands/にファイルが生成されます。
ので、そこにコマンドの中身を実装します。“`php
【AWS初学者向け】EC2にアプリケーションをデプロイ
# はじめに
こんにちは、東京でバックエンドエンジニアやってるoonoです。
今回は**AWSのEC2上にアプリケーションをデプロイしてみたい**方向けに
記事を書いていこうと思います。記述内容に誤りがございましたらご教示いただけますと幸いです。
# 前提知識
本記事は以下のような方を想定しています。
* ローカルで作成したアプリをサーバーにデプロイして公開したい方
* AWSのサーバー(EC2)へのデプロイを行なったことが無い方
* LaravelのCRUD基本知識が身についている方(本記事はLaravelを例に扱ってます)
* Linuxの基礎的なコマンド(cd,ls,mkdirなど)を理解している方
* githubを扱ったことがある方# 本記事にて扱わない技術
本記事はAWSを扱うのが初めての方に向けての内容となります。
極力シンプルな内容にするため以下のような技術は割愛させていただきます。
* Docker
* docker-compose
* ECS
など、実務レベルに近いアプリのデプロイや運用に関する技術# EC2とは?
では早速Laravelアプリケーショ
【PHP備忘録】 WordPress関数:”Undefined function”エラー対処法
## 最初に
私はWordPressを使って既存の静的サイトを動的サイトに改修する学習をしていました。
その過程で遭遇したエラーについて、対処法を備忘録として残したいと思います。## ツール・言語
ツール:VSCode(拡張機能”intelephense”)
環境:Local
言語:PHP## 事象
WordPress標準関数`wp_head()` を入力後、以下のエラーが表示されました。
※`wp_head()` ⇒HTMLのheaderを部品化する関数▼エラー
“`
Undefined function ‘wp_head’.intelephense(P1010)
“`▼意味
`wp_head()` は未定義の関数
## 調べた結果
**”PHP拡張機能”intelephense”はWordPressオリジナル関数をサポートしていない。”**
”intelephense”はコード補完やエラーチェックなどをしてくれるPHP拡張機能。
”intelephense”の初期設定では、WordPress関数をサポートしていないとの事。それが原因でエラーチェックに引っ掛か
Laravel Eloquentのupdateの挙動がどうもうまくいかない
# 概要
Laravel Eloquentにおいて、updateの結果をレスポンスとして返すような状況も想定される(特にAPI)と思われるが、
**どうもうまくいかなかった**ので備忘録的に残してる記事である。# 前提知識
## whereとfindでのupdateにおける返り値の違い※ こちらの記事大変参考になりました。ありがとうございます!
# 起こった事
– `find($id)->update($values)`
– 更新成否が不明
– 更新失敗でもつねに返り値trueが返る
– `where([‘id’ => $id])->update($values)`
– 不正なカラムでupdateすると、find()だとtrueを返すのに対し、where()はしっかりエラーを返す。
– しかし、**更新前と同じデータや空の情報で更新処理を行った場合**、実際のデータは更新されないが、更新成功判定(return 1)は出て
一体全体、PHPで配列をどう扱えばいいのか?(配列を扱うニッチなスキルを含む)
# はじめに
## phpの配列の特徴
phpでは、配列とは一つのタイプで、`[1,2,3,4,5]`と`[‘a’ => 1, ‘b’ => 2, ‘c’ => 3, ‘d’ => 4, ‘e’ => 5]`の二つの方式を使用できます。最初のはインデックス付き配列で、2番目は連想配列と呼ばれます。
静的型付け言語では、インデックス付き配列はキーが存在しません。メモリ上の特定の位置にデータを一定のバイト間隔で順次に読み込みます。あるインデックスの値にアクセスする際には、1つの要素が持つバイト数分だけ「インデックス番号 x 1つの要素が占めるバイト数」を飛び越える方式で処理するため、非常に高速です。
phpのインデクシング配列は連想配列と内部処理は同じように処理されます。というのは、`[1,2,3,4,5]`が`[0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5]`と同じであるためです。インデックス付き配列として作成しても、結局phpではすべて連想配列として処理されます。
phpの配列はインデックス付き配列でも連想配列でも、内部的にはハッシュテーブルを
PHPでデータベース操作の基本
はじめに
基本的なデータベース操作(select, insert ,delete)についてまとめました。
データベース接続
PHPからデータベース(MySQL)を操作するために、まずデータベースに対して接続を確立させます。
“`php:db.php
$usr = ‘user’; // 接続ユーザー名
$pw = ‘password’; // 接続時のパスワード
$dsn = ‘mysql:host=localhost; dbname=test; charset=utf8’;$pdo = new PDO($dsn, $usr, $pw);
“`
①$dsnはデータベース接続文字列で、データベースに接続するための情報(ホスト名やデータベース名など)をまとめたものです。
※接続先のデータベースによって異なるので注意。今回はMySQL②PDOクラスをインスタンス化します。
SELECT
データベース接続ができたら、テーブルからデータを取得していきます。
今回取得元のテーブルはこんな感じ
PHPのセッションを安全に破棄する方法(超個人用覚書)
#### 最初に結論のスクリプト
※あくまでも個人用覚書。環境によっては条件やパラメータ等を追加したほうがよい(解説参照)。
“`deleteSession.php
HumHub公式マニュアルを読む(Database Models)
# HumHub公式Development Guide
## Basic Concepts > Database Models
https://docs.humhub.org/docs/develop/models/
### DBマイグレーション
#### そもそもDBマイグレーションとは?
WEBアプリのフレームワークの文脈で登場する場合は、データベース構造の変更の経過をソースコードに記録する仕組み。
アプリ側でソースコードにDB変更内容を記述して、専用コマンドを実行することで、DB側に変更を適用する。
– マイグレーションを作成する。ファイルにテーブル作成、カラム追加、などのデータベース構造の変更を記述する。
– マイグレーションを実行する。データベースにマイグレーションによる変更が適用される。### Active Record
#### そもそもActive Recordとは?
Active Recordはデザインパターンを表す言葉。
WEBアプリのフレームワークで登場する言葉で、モデルクラスのこと。
DBの1テーブルがモデルの1クラスと対応する。
PHP8から追加された新機能「nullsafe演算子」を活用しよう
## nullsafe演算とは
`nullsafe演算子`(`?->`)は、オブジェクトのプロパティやメソッドにアクセスする際に、
nullチェックを簡潔に行うための新しいPHP構文です
従来の方法では、nullチェックを行うために複数の条件文を書く必要がありましたが、
`nullsafe`演算子を使用すると、コードがシンプルで読みやすくなります基本構文
“`php
$property = $object?->property;
$result = $object?->method();
“`上記では、`$object`がnull出ない場合にのみ`property`や`method`にアクセスし、nullの場合はnullを返すようになっています
## 実際のコード例と解説
### 従来の方法との比較
従来の方法では、以下のようにnullチェックを行う必要がありました
“`php
if ($object !== null) { // またはisset()、!empty()など
$property = $object->property;
} else {
Laravel Eloquentで親テーブル小テーブル共に検索対象にする方法
# 概要
Laravel Eloquentにおいて、親子テーブル両方を検索対象にする方法について、この記事では記載する。# 解決方法
**orWhereHas を使って検索対象に**含めれば、解決することが出来る。“`App\Models\Player.php
public function team(): BelongsTo
{
return $this->belongsTo(Team::class);
}static public function findBySearch(string $input)
{
$players = Player::makeBuilder($input)->get()->load(‘team’);
return $players;
}static private function makeBuilder(string $input)
{
return Player::where(‘name’, ‘LIKE’, ‘%’ . $input . ‘%’)
->orWhere(‘age’, ‘
1.DOCKERを理解したい – 1day
こんにちは🦎
あかはら。と申します。
この分野は本業であり、いわゆる趣味副業に効果的なものではありませんが、一般的なエンジニアが一日30分から1時間がんばろうという心意気とその記録のためのページです# ◆今回の目的:Dockerの理解
## ▼参考
・https://qiita.com/kouta222/items/6bcfcd261cfea62238bc
・https://salumarine.com/how-to-prepare-nginx-laravel-development-environment-using-docker-compose/
## ▼作業内容
### ➀docker desktop をインストール
普通にexeファイルを開くだけですね🦎
### ➁Nginxを動作させる
参考のサイトの手順が不十分っぽいので、ここからは試行錯誤
– まずは開発環境を置くディレクトリを作成mkdir docker-Laravel
cd docker-Laravel– 下記のようなディレクトリを構築
docker/conf/default.conf
【PHP】mt_randの精度を調べてみた
# はじめに
ABテストのために組んだスクリプトの精度を計算してみた。
# 問題
本当に50%で結果が出るのか文献が見つからなかったので。
(というか探すより自分で調べたほうが早い)# 解決方法
下記を実行するのみ。
“`test.php
0,
‘count1’ => 0
];for ($i = 0; $i < $trials; $i++) { $result = mt_rand(...$arr); if ($result < $arr[1]/2) { $results['count0']++; } else { $results['count1']++; } } return $results; } // 試行回数を指定し
Yii2フレームワークのエントリスクリプトを理解する。
[前回記事](https://qiita.com/KoheiOgura/items/d16f95a8ea5007f79edf)の`/var/www/html/humhub/index.php`の中身を理解する。
“` index.php
[PHP] xmlを読み込み、連想配列に格納する
### PHPでxmlを読み込み、連想配列に格納する
– chatGPTだと回答が不安定なので自分用にメモ。
“`
$xml = simplexml_load_string(file_get_contents(‘https://target.xml’), ‘simpleXMLElement’, LIBXML_NOCDATA | LIBXML_BIGLINES);
if ($xml === FALSE) {
die(“Failed to parse XML data.”);
}
$ary = json_decode(json_encode($xml));
“`
Laravel インストール
# はじめに
こんにちは。@bdrccです。最近色々ありまして、8年以上使っていた MacboorAir を新調しました。
他のソフトウェアのインストール中、「あ、Laravelいけるかも」と気づき、インストールを試みました。これから勉強したいという方向けに、メモを残しておきます。
# 環境
– MacbookAir M3チップ
– MacOS 14.3 Sonoma# 手順
## 1:PHP(MAMP) インストール
下記のサイトからインストールします。
OSの種類が違う場合は、バージョンに合わせてインストールしてください。https://www.mamp.info/en/downloads/
## 2:Homebrew インストール
下記サイトからコードをコピーして、ターミナル上で実行します。
https://brew.sh/ja/
私の場合は
“`:terminal
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.