PHP関連のことを調べてみた

PHP関連のことを調べてみた

【CakePHP5】GitHubのPush時にPHPUnitでテストする

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回は前回作成したPHPUnitをGitHubActionsでGitHub上でテストできるようにしようと思います。

前回

https://qiita.com/keitaMax/items/7327c83cea938fe124f9

# GitHubActionsのymlファイルを作成

GitHubActionsを作成します。

以前Laravelで作成したものを参考にしようと思います。

https://qiita.com/keitaMax/items/bbfecbdb73322b53bb4c

“`yml:phpunit.yml
name: phpunit

on: [pull_request]

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
steps:
– uses: actions/checkout@v2
– name:

元記事を表示

Dockerを使ってLaravel(php-fpm + mariadb + nginx) の環境を構築したい!

# はじめに
大学のプロジェクトで環境をDockerに移動しなければいけない機会があったので,Laravelの環境を作成しました!
コンテナ内のartisanコマンド等で作成されたファイルは権限を変更しないとVScodeで直接編集でしたが、今回はVScodeで直接編集ができるように工夫しました!

# やりたいこと
php-fpm + mariadb + nginx のLaravelの環境を作成したい!

# お急ぎの方
以下のリポジトリをForkして作成したリポジトリをcloneしてください!
※ .envファイルを記述する必要あり.

https://github.com/46maru/Laravel_container

# 動作環境
– windows10
– wsl2
– VScode
– docker for windows (4.30.0)

# ファイル構成
“`
project名
┣━ docker/
┃ ┣━ app/
┃ ┣━ Dockerfile
┃ ┣━ php.ini
┃ ┣━db/

元記事を表示

Docker で PHP8.3 + Apache + Laravel + MySQL 8 + phpMyAdmin 環境を構築

[また今度](https://qiita.com/naente/items/d259ea84c172deeff7d8)が来るまでに 5年かかったゾ。

# 対象読者
– 私
– これまで XAMPP インストールして hosts 書いて httpd.conf に VirtualHost 書いてローカル開発環境を構築していたが、そろそろ Docker に移行したい私
– 上記の工程を開発メンバー各自にも行なってもらっていて、今時 Docker じゃなくてゴメンと思っていた私
– 他の Docker 環境構築記事のレベルが高すぎて理解できなかった私

# 動作確認環境
あらかじめ Docker Desktop と Composer のインストールを完了しておいてください。

## Windows
– Windows 10 Enterprise 22H2
– Docker Desktop 4.31.1
– Docker 26.1.4
– Docker Compose v2.27.1-desktop.1
– Composer 2.7.2

## Mac
– macOS Ventura

元記事を表示

AlmaLinuxにComposerの導入してみる

PHPのパッケージ管理システムとして「Composer」を利用している方は多いのではないでしょうか?

今回はAlmaLinuxにComposerの導入する方法をご紹介致します。

## PHPComposerとは

![php001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668800/e278896c-b093-4436-534d-7ddf9d788d3c.png)

ComposerはPHPのパッケージ管理システムとなります。

依存関係の管理やパッケージのバージョン管理等を行う事が出来ます。

下記公式サイトとなります。

https://getcomposer.org/

下記githubリポジトリとなります。

https://github.com/composer/composer

## 環境

今回インストールを行う環境は以下となります。

“`
cat /etc/almalinux-release
AlmaLinux release 9.3 (Shamrock Pampa

元記事を表示

Threads API for PHP を公開しました。

# 「Thread API by PHP」とは

## 概要

* PHP で「Threads API」を扱うためのクラスとそのサンプルコードです
* GitHub リポジトリ: [mikiakira/threads_api: Threads API](https://github.com/mikiakira/threads_api)
* これは、上記リポジトリの README.md を複製 + 解説記事です

## API 発表から実装に至る経緯

* メタ公式発表: [Threads APIがついに公開](https://developers.facebook.com/blog/post/2024/06/18/the-threads-api-is-finally-here/)
* ※ 現地時間で、2024年6月18日の発表です

おそらく、PHP で実装された記事としては、[threads-Apiで投稿するための雛形 #PHP – Qiita](https://qiita.com/taoka-toshiaki/items/e606e2cfa31c6e2ed771

元記事を表示

パス部分に%2F(/)スラッシュは使えないのでクエリパラメータでパラメータを指定した

下記のようなURLでパラメータをパスで受け取ろうとして、404になった。

“`md
https://example.com/path/hoge%2Ffuga/
“`

“`route.php
Route::get(‘/path/{param}’, ‘HogeController@index’);
“`

パスでパラメータを受け取ろうとしていた。が/(スラッシュ)は予約文字ということでパスには使えないことが判明。
下記がエビデンス。
https://www.ietf.org/rfc/rfc2396.txt#:~:text=2.2.%20Reserved%20Characters

代わりに、

“`route.php
Route::get(‘/’, ‘HogeController@index’);
“`

“`HogeController.php
$request->query(‘url’);
“`

で受け取るようにした。
下記のようなURLで正常に遷移してくれるようになりました。

“`md
https://example.com/path/?url=hoge/

元記事を表示

EloquentのwithCountメソッドでリレーション先のレコード数を取得する方法

## はじめに
「リレーション先のレコードは使わないけど、取得したレコードの数は見たい」という状況が稀にあります
自分はリレーション先のカラムをidにしView側でCountしていましたが、これをModelだけで実現できる`withCount`メソッドに感動したので解説していきます

## withCountメソッドの基本
`withCount`メソッドは、リレーションシップのレコード数をカウントし、結果に追加するために使用されます
例えば、Userモデルが複数の投稿(posts)を持っている場合、各ユーザーの投稿数をカウントして取得できます
これは非常に便利です

## 基本的なwithCountの使用
ユーザーモデルとポストモデルが1対多の関係にある場合、以下のように`withCount`メソッドを使用します

モデルの定義
“`User.php
public function posts()
{
return $this->hasMany(Post::class);
}
“`

クエリの使用例
“`php
$users = User::withCount(‘posts’

元記事を表示

PHPにおける isset と !empty の違い

`isset` と `!empty` はどちらも変数の値をチェックする関数ですが、それぞれ異なる動作をします。

**`isset`**

* 変数が宣言されていて、かつ `NULL` ではない場合に `true` を返します。
* 変数の値が空文字 (“”) や数値の 0 であっても `true` を返します。
* 未定義の変数に対して使用すると **Fatal error** を発生します。

**`!empty`**

* 以下のいずれかに該当する場合に `true` を返します。
* 変数が `NULL` である。
* 変数が空文字 (“”) である。
* 変数が数値の 0 である。
* 変数が `false` である。
* 変数が **未定義** である。
* 変数に値が設定されている場合は、たとえそれが空文字や数値の 0 であっても `false` を返します。

**例**

“`php
$var1 = “”;
$var2 = 0;
$var3 = null;
$var4 = false;

var_dump(isset($var

元記事を表示

【備忘録】CakePHPのよく使うコマンド

# はじめに

こんにちは、エンジニアのkeitaMaxです。

CakePHPのよく使うコマンドを備忘録として残していきます。

# マイグレーション

### マイグレーションファイルを作成

“`
bin/cake bake migration CreateArticles created modified
“`

### マイグレーションファイルを実行

“`
bin/cake migrations migrate
“`

### マイグレーションファイルのロールバック

“`
bin/cake migrations rollback
“`

# コントローラ

### コントローラの作成

“`
bin/cake bake controller articles
“`

# モデル

### モデルの作成

“`
bin/cake bake model articles
“`

# テスト

## PHPUnit

### 全部実行する
“`
vendor/bin/phpunit
“`

### 特定のファイルだけ実行する
`tests/TestCas

元記事を表示

【Laravel】【Vue.js】プロジェクト作成手順①

# はじめに
Laravel(バックエンド)とVue.js(フロントエンド)を組み合わせたシステムを構築する
手順を記述します。

# 事前準備
以下がインストール済み・環境構築済みであること。
手順は別記事でまとめておりますので、ご参考になれば幸いです。
– PHP
– Composer
– PHPデバッグ環境構築(Xdebug・PHP Debug)

# Laravelアプリ作成手順
### ① プロジェクト用のディレクトリを作成
 ※私は「C:\work\demo」のように作成しました。
### ② Laravelプロジェクト作成
**(1) VSCodeで①ディレクトリを開く**
![アプリ作成01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/898fef6d-389d-fa81-c152-e6d86331a4b3.png)
**(2) メニューバー[ターミナル] > [新しいターミナル] でターミナルを起動**
![アプリ作成02.png](https://qiita-ima

元記事を表示

amazon linux2023にphp5.6を入れたい

## 背景
既存のシステムがamazon linux2だったがもうそろそろサービスが終了するということで、amazon linux 2023に移行しますのでとりあえず既存システム同じ環境を用意してください~となり見てみたところPHP5.6が使われてるじゃないですか~~~

ほなじゃあphp入れるのにまずepel君入れますか~
“`
sudo amazon-linux-extras install epel
“`
すると
“`
amazon-linux-extras command not found
“`
amazon-linux-extras君はいないって怒られた(´・ω・`)

なななんとamazon linux 2023には搭載してないらしい…

## やったこと
epelが入れられないのでremiリポジトリからインストールを断念してソースコードを入れてビルドする方針に変えてやります
まずビルドに必要なパッケージを入れるとこから始めよう
“`
sudo yum install -y gcc gcc-c++ make automake autoconf kernel-de

元記事を表示

【PHP】Qiita/RSSフィード解析

QiitaのRSSフィード活用されていますか?
個人サイトや、推しメンの記事を確認するのに結構便利です。

↓↓ Feedの存在知らない方はこちら ↓↓

https://qiita.com/umekikazuya/feed


今回は個人用に提供されているRSSフィードをPHPで解析してみました。

公式からRSSが提供されているのに、わざわざ解析してJSON化する意味がわからない…。って思う方もいると思います。
用途は人それぞれですが、「毎朝Slack通知したい」「記録として残したい」「独自のAPIを用意して、複数のアプリで使いまわしたい」とか、まぁ役立ちそうですよね。

**「HTTP通信」をして「XMLの解析」をして「JSON化」する。**
わりと、初学者の学習にぴったりな題材な気がします。

## 使用ライブラリ
### Guzzle Http Client

HTTP通信のためにGuzzleライブラリを利用します。

https://docs.guzzlephp.org/en/stable/

## 実装例
さっそくですが実装例を紹介。
(※ 記事用に細かい例外処

元記事を表示

bluesky api php で post

参考
https://mgng.mugbum.info/1699

# blue sky で post したい

1 アプリパスワードを作成
https://bsky.app/settings/app-passwords

2 パスワードを設定

“`.env
BLUESKY_APP_PASSWORD = xxx-xxxx-xxx-xxx
“`

“`app.php
‘bluesky_app_password’ => env(‘BLUESKY_APP_PASSWORD’)
“`

続いてモデル

“`bluesky.php
class Bluesky extends Model
{

public $jwt;
public $handle;

public function __construct($handle,$password)
{
$this->handle = $handle;

$ch = curl_init(“https://bsky.social/xrpc/com.atproto.serve

元記事を表示

Laravel にてユニットテスト実行時、DBの外部キー制約を無効化する

よく忘れるのでメモ

というか調べていて初めて知りましたが、いつの間にやらLaravel標準で用意してくれていた模様

“`php
use Illuminate\Support\Facades\Schema;

// 外部キー制約を無効化
Schema::disableForeignKeyConstraints();
// 外部キー制約を有効化
Schema::enableForeignKeyConstraints();
“`

## 以前のやり方

利用しているのが MySQL だったので問題ありませんでしたが、どうやら PostgreSQL では動かないようで…

やはりLaravel標準で用意されていたらそれを使うに限りますね

“`php
use Illuminate\Support\Facades\DB;

// 外部キー制約を無効化
DB::statement(‘SET FOREIGN_KEY_CHECKS=0;’);
// 外部キー制約を有効化
DB::statement(‘SET FOREIGN_KEY_CHECKS=1;’);
“`

## 改めて使い方

元記事を表示

【CakePHP5】PHPUnitでテストをしてみる

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回は、以前作成したCakePHPの環境をつかってテストコードを書いていきます。

https://qiita.com/keitaMax/items/6152aa9fff66bee4e887

# インストール
>CakePHP には PHPUnit をベースとした高度なインテグレーションが組み込まれており、PHPUnit 本体が持つ機能に加えて、CakePHPでテストをスマートに管理するための便利な拡張機能を備えています。
(引用:https://book.cakephp.org/5/ja/development/testing.html)

CakePHPはインストールしなくてもすでに組み込まれているので、インストールは必要ないです。

# テストを作成

コントローラとモデルを作成するコマンドを打った時に一緒にテストを書くファイルお作成されます。

コントローラとモデルを作成については以前記事書いているので以下を参照してください。

https://qiita.com/keitaMax/items/b260eb38

元記事を表示

これであなたもマルチリンガル!?色んな言語であいさつしてみよう

# はじめに
みなさん,言語を学び始めるときにはじめに覚えるものはなんですか?そう!**『あいさつ』** です.これは自然言語に限らず,プログラミング言語でもそうです.どんな言語もまずは`Hello World!`の出力方法から学ぶはずです!!っということで,今回は全何種の言語であいさつをしてみましょう.この記事を読めばあなたもマルチリンガルになっているはずです^^

# 人気言語10選
ここに書かれているランキングですので,自分にとっての好きな言語ランキングなどあれば,コメントに書いておいてください!!

https://codezine.jp/article/detail/19530#:~:text=2024%E5%B9%B4%E4%BA%BA%E6%B0%97%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%AF%E3%80%811%E4%BD%8D

元記事を表示

PhpStormが思いのほかよくなっていた

# 久しぶりにPHPを使う

皆さんは、PHPを書くとき何を使っていますか?
昔はsakura editorや秀丸を使っていましたが最近はもっぱらPhpStormが多いです。
1ファイルだけのバッチっぽい何かの場合は、VsCodeでちゃちゃっとする事もありますが
ファイル分割が必要な規模は、基本的にPhpStormを使います。

## PhpStormの何が良いのか?

個人的にPhpStormのここが良いと思う所は大ざっぱに以下の様なものになると思います。
・インストールした瞬間PHPで必要そうなものは大体入っている
ものぐさな私からすると必要なプラグイン(似たようなプラグインが山のようにあるので選定するのがつらい)を探さなくてよい事です。
・他言語用の統合環境も一通り揃っており操作感もほぼ同じ(全部のせコースを使っている為)
・地味に機能が豊富(設定周りもかなり充実している)
・ローカル AI による行全体コード補完(NEW)

## ローカル AI による行全体コード補完(NEW)

今回は、この機能について話したいと思います。
この機能は、2024.1のバージョンに実装されたも

元記事を表示

CakePHPプロジェクトの作成と実行方法

# CakePHPプロジェクトの作成と実行方法

## CakePHPとは?

[CakePHP](https://cakephp.org/)は、開発者が迅速にWebアプリケーションを構築できるように設計されたオープンソースのPHPウェブフレームワークです。MVC(Model-View-Controller)アーキテクチャに基づいており、データベース操作、フォーム処理、認証、セッション管理などの一般的な開発タスクを簡素化する強力なツールキットを提供します。

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qtmbun5z5bqbisz9px85.png)

## CakePHPの主な機能と利点

– **迅速な開発**: 豊富なコード生成ツールを提供し、開発者が一般的なコード構造を迅速に作成できるよう支援します。
– **柔軟で強力なORM**: 組み込みのORM(オブジェクト・リレーショナル・マッピング)レイヤーがデータベース操作を簡素化します。
– **セキュリティ**:

元記事を表示

PHP+Apache+MySQL+phpMyAdminのDocker環境構築してみた!

# はじめに
今年の4月から未経験で関西の受託開発企業に就職し、エンジニアとして働いている者です。これまでXAMPPを使ってローカルで開発を行っておりましたが、新しい技術にも挑戦したい考え、Dockerで開発環境を構築してみました。その時の復習として本記事を書きました。
間違い等ございましたらご指摘をバンバンいただけると幸いです。

# 対象者
– PHPの環境をDockerを使って構築をしたい方
– XAMPPからDockerへ移行したい方

# 目的
– DockerでXAMPPっぽい開発環境を構築し、phpMyAdminとphpinfoをブラウザで表示させる!

※MacBook Air M2 Sonoma14.4、windows 11で動作確認済みです。
※PHPのバージョン7.4.8、 MySQLのバージョン8.1の環境を作成します。

# 目次
| 章 | タイトル |
|—:|————-|
| 1 |Dockerについて|
| 2 |ディレクトリ構成|
| 3 |Dockerfile作成|
| 4 |docker-compo

元記事を表示

LaravelでCSVファイルをインポート(maatwebsite/excel)

LaravelでCSVファイルのインポート機能を作成しようと思い、maatwebsite/excelというライブラリを使ってみました。
メモとして使用例を残しておきます。

## インストール

公式に則って行います。
https://docs.laravel-excel.com/3.1/getting-started/installation.html

“`
composer require maatwebsite/excel
“`
“`
php artisan vendor:publish –provider=”Maatwebsite\Excel\ExcelServiceProvider” –tag=config
“`

`config/excel.php`というファイルが作成されます。

## 前提

今回アップロードしたいCSVのサンプル
“`
企業名,郵便番号,住所,電話番号,代表者名,担当者名,備考
テスト02株式会社,2203456,埼玉県上尾市井戸木,090-4736-0924,佐藤,中島,テストです
“`
上記の1行目をタイトルとして認識させ、2行目

元記事を表示

OTHERカテゴリの最新記事