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

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

AWS Amazon LinuxでWordPressを立てた時にカスタムパーマリンクが機能しない時の対処法

## この記事について
[前回の記事](https://qiita.com/yabish/items/fff120b622d723f0e7ce)の執筆後にWordPressのパーマリンクを変更すると「更新に失敗しました。返答が正しいJSONレスポンスではありません。」とのエラー…
WordPressを初めて触っていたこともあり、何が原因かわからないエラー文に悪戦苦闘しましたが、なんとなく状況が理解できてきたので得られた知見をまとめました。
おそらく、[really simple ssl](https://ja.wordpress.org/plugins/really-simple-ssl/)のプラグインが悪さしているのでしょうが…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412378/6d8437be-28f8-ba4f-b001-4b73259b1016.png)

## 問題が発生した状況
AWSのアーキテクチャ:[前回の記事](https://qiita.com/

元記事を表示

PHPカンファレンス関西2024に行ってきました

# はじめに
– 昨日[PHPカンファレンス関西2024](https://2024.kphpug.jp/)に行ってきました。
– 弊社はゴールドスポンサーとして協賛しており、バッグやパンフレットに大きくロゴを入れていただきました!

– 私もスポンサー枠で参加させてもらったので、拝聴したセッションごとに内容と感想を書いて行きます。

# Laravelでミニマム開発からスタートして個人サービスを利益化するまでの経験談!
– https://fortee.

元記事を表示

[Laravel / Fortify] 認証処理を可視化、カスタマイズしよう!

**プロフィール**
* 私立文系大学3年
* プログラミング歴は1年1か月
* Laravel / javascript を主に使用
* 現在は React を学習中
* 最近友人にもらった日向坂・上村ひなの写真集を見て、少しハマりそう

## Laravel / Fortifyについて
Laravelの認証パッケージには複数の種類がありますが、私は以下の2つの使用経験があります。
1. Laravel / ui
1. Fortify

私がLaravelの学習を始めるにあたり、以下の書籍を購入し学習しました。
おそらく最もメジャーな書籍だと思われます。
[PHPフレームワーク Laravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83-ebook/d

元記事を表示

【Drupal】PHP構成の設定

## はじめに
DrupalのPHP構成の確認画面をご存知ですか?
こちらのパスから確認することができます。
“/admin/reports/status/php“

![PHP構成確認画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/576d9a60-85ba-d54b-f512-3c2695263f62.png)

通常であればインスタンスやコンテナの設定でPHP構成の管理を巻き取ることが多いのかなと思います。

ただ、
「本番環境・テスト環境ではメモリの制限それぞれ設定したい」
「開発環境ではメモリをフルに使いたい」
ってこと結構ありますよね。

**(環境変数を使えば簡単にできるよって意見もあるかと思いますが…)**

今回は、アプリ側でのPHP構成の変更方法をご紹介します。

## 設定場所
設定場所はなんと!
Drupal標準で用意されています。

### Drupal標準..?
軽くissueを調べてみましたが、恐らく“settings.php“ or “sett

元記事を表示

PHPカンファレンス 関西 2024

先日、PHPカンファレンス関西に行ってきましたので、体験談を記録します。

# PHPカンファレンス関西とは
PHPカンファレンス関西は、PHPエンジニア(:PHPer)がPHPやPHP周辺の技術的知識やノウハウ、体験を共有するための大規模技術カンファレンスです。
今年は2018年から6年ぶりの開催になります。

# 参加したセッション
– [レガシーシステムへのPHPStan導入から半年での課題と効果](https://fortee.jp/phpcon-kansai2024/proposal/10c6f1ac-ec4b-4895-8db7-39b9a13c84bb)
– [RDBアンチパターンと戦う – 削除フラグ完全攻略ガイド](https://fortee.jp/phpcon-kansai2024/proposal/4e03491c-2a97-40aa-8ff9-a68593b0e847)
– [アプリケーションエンジニアこそ「監視」だよね!と私が考える訳](https://fortee.jp/phpcon-kansai2024/proposal/42712995-5f3e-4c

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~セッション編~

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/e98f25bec6cc067f24a4)の記事でFlowにおけるキャッシュの扱い方について解説しました。今回はセッションの扱いについて解説していきます。

# セッションの扱い方
セッションによくある「ECサイトの商品カゴ」の例で説明します。

まずは、セッションで扱いたい情報のクラスを用意しましょう。
以下のようなカゴEntityを作成しました。

“`php

/**
* @Flow\Scope(“session”)
*/
class CartEntity {

/**
* @var array
*/
protected $items = array();

/**
* @param string $item
* @return void
* @Flow\Session(autoStart = true)
*/
public function addItem($item) {

元記事を表示

【PHP】PHPで使うfor文って何?

## for文って何?
同じ動作を繰り返し行う場合には、ループ処理がよく使われます。
ループ処理を使用することにより、コードがシンプルになり作業効率が向上します。
そのループ処理を行う文の1つがfor文です。
for文は繰り返す回数が決まっているときに使用します。

### どう記述するの?
“`php:for文
for (式1; 式2; 式3){
//ここに処理を書く
}
“`
0から5までの数字を表示させる場合
“`
for ($i = 0; $i < 6; $i++){ echo $i; } ``` ① **$i =0 ;** ここでは、式1を0で設定します。 ② **$i < 6;** ここでは、式2で$iが6より小さい間繰り返す指示をしています。 ③ **$i++;** ここでは、式3に処理を1回するたびに初期値に+1する指示を出しています。 ④ **echo $i;** ここでは、処理を1回するたびに$iを出力する指示を出しています。 echoした結果 012345 が表示されます。 ### 2つのfor文を連動させる、2重ループ f

元記事を表示

PHP入門 ~データベース接続~

# PDOとは
「PHP Data Objects」の略で、PHPから簡単にDBにアクセスするための拡張モジュールです。データベースの種類やバージョンの違いを気にせずコードを書くことができます。

# データベースに接続
PDOオブジェクトのインスタンスを作成します。以下の例では、変数$pdoに代入しています。
“`php
$pdo = new PDO($dsn, $username, $password, $options);
“`
4つの引数を渡していて、説明は以下の通りです。
* $dsn…データベースに接続するための必要な情報
`dbname`はデータベース名を指定
`host`はホスト名またはIPアドレスを指定
`charset`は文字セットを指定
“`php
$dsn = ‘mysql:dbname=test;host=localhost;charset=utf8mb4’;
“`
* $username…データベースに接続するためのユーザー名
ルート権限を使う場合、デフォルトは`root`です。
“`php
$username = ‘root’;
“`
* $p

元記事を表示

サイボウズGaroonでSOAP APIを使ってPHPでリクエストを送る

## 記事の概要
社内ネットワークで組んでいるシステムから、同じく社内ネットワーク内にあるオンプレミス版のgaroon5のユーザ情報を取得したいという状況が発生し、初めてSOAP APIを使ってみたという内容の記事です。

### 下調べ
ひとまずcybozu developer networkでgaroon API ドキュメントを確認。
[→SOAP APIの共通仕様](https://cybozu.dev/ja/garoon/docs/soap-api/overview/soap/)
[→ユーザ情報を取得するAPI](https://cybozu.dev/ja/garoon/docs/soap-api/base/get-users/)

### 使用しているgaroonのAPI定義確認
定義の中にリクエストの送り先がAPIの種類ごとに書いてあります。
“`xml

元記事を表示

laravel 他のフィールドの値によって必須としたいときのバリデーション

# やりたいこと

typeが1の場合のみdetailを入力必須にしたい
または入力禁止にしたい
“`
{
“type”: 1,
“detail”: “XXX”
}
“`

# 結論
“`php:FormRequest
public function rules(): array
{
return [
“type” => [‘required’, ‘integer’, new Enum(Type::class)],
// 入力必須にしたいとき
“detail” => [‘string’, ‘nullable’, Rule::requiredIf(条件)]
// 入力禁止にしたいとき
“detail” => [‘string’, ‘nullable’, Rule::prohibitedIf(条件)]
];
}

“`

“`php:FormRequest
“detail” => [‘stri

元記事を表示

Laravel API Resourceのテスト

# 概要

調べ方が悪いのかもしれないけど、APIResourceのテストを書いた記事が見つけられなかった。
Featureテストを使えばリクエストからレスポンスまでをテスト出来るので、あまり需要はないかもしれないけど備忘録として残しておく。

## 環境

– Laravel10
– PHP8.1
– MySQL8

## Resource に Model を渡すケース

ControllerからユーザーモデルをResourceクラスに渡す

“`php: UserShowController.php

元記事を表示

LEMP環境 Laravel Nginx Mysql PHPをDockerで構築してみた

## はじめに
最近LaravelのDocker環境を考える機会がありました。
他の環境は作ったことが何度かありましたが、Laravelは立ち上げのコマンドすら知らない状態でDocker環境を構築していったので良い学びになりました。
`healthcheck`を使用することにより、DBの準備完了前にLaravelがDBを読み取ろうとする事故をなくすことに成功しています。
コンテナの実行順序を正しく制御することで、terminarl上でDocker構築のログが止まる頃にはアプリが完全に応答する状態を保証しています。
適宜コメントを入れているので、参考にしてください。

私は学生エンジニアです~~あと2ヶ月くらい…~~。
至らない点もあるかもしれません。
その点ご了承ください。

## 前提条件
Docker, Docker Composeの知識

## 各ファイルの説明

ファイル構成
“`shell
data/ # Dockerで立てたdatabaseの中身
docker/
db/
conf.d/
– my.cnf
init/

元記事を表示

CMSで作るモダンECサイト

## こんなもの作りました。

義理の母がお花屋さんをしていて、たまに個人でお店をだしていたりしてるのですが、かなりセンスが良くリピーターも多いので「ECサイトで販売したら売れるのでは?!」と思い実際に作ってみました。

Home


(レスポンシブ対応していないため、PC表示だとかなり崩れて表示されます・・)

宣伝もかねて紹介させてもらいます。

## 使用技術

– WordPress
– PHP
– Bootstrap
– その他もろもろの無料サーバ、DBなどなど

## 各パーツとこだわり

ロゴも自作です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480394/e17e00c6-590f-790b-ae9d-6af729f10b47.png)

TOPバナーのくすみ加工とカラーがお気に入りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

【PHP】代入演算子の返り値が変わることがある

PHPの[代入演算子](https://www.php.net/manual/ja/language.operators.assignment.php)は式なので値が返ってきます。
どういうことかというと、`$a = 10`という代入式を書くと`$a`に10が代入されますが、それとは別に`$a = 10`全体としての値も10となるわけです。

# 多重代入

時々ある

“`php
$a = $b = $c = 10;
“`

という書き方、これは

“`php
$a = ( $b = ( $c = 10 ) );
“`

と解釈されます。
まず`$c = 10`で`$c`に10が代入され、`$b`には`$c = 10`の返り値10が代入され、`$a`には`$b = ( $c = 10 )`の返り値10が代入される、ということになり、結果として`$a`・`$b`・`$c`すべてが10になります。

プロパティも同じです。

“`php
$c = new stdClass();
$a = $c->b = 10;

var_dump($a, $c); // $a=10, $b

元記事を表示

php nginx mysqlをDockerで構築する

## はじめに
最近LaravelのDocker環境を考える機会がありました。
その時の知見を活かして、昔考えたDocker PHP環境をアップグレードしたいと思います。
今回の構成の特徴は`healthcheck`です。 `depends_on`で実行順序を保証するだけではなく、対象のコンテナの準備が完了(healthcheckに合格)してから依存するコンテナが構築を開始するようにしています。
適宜コメントを入れているので、参考にしてください。

私は学生エンジニアです~~あと2ヶ月くらい…~~。
至らない点もあるかもしれません。
その点ご了承ください。
## 前提条件
Docker, Docker Composeの知識

## ファイル構成

“`
docker/
db/
conf.d/
– my.cnf
init/
– init.sql
.env
php/
– .env
– Dockerfile
– php.ini
nginx/
– default.conf
app/
src/

元記事を表示

Google.Calendar を ローカルで利用する為の方法について

[ 初投稿 ]
Google.Calendarを ローカルで利用する為の
Source.Generatorを 作った。

[calenG](https://twilight-bluesy.net/_utl/calenG-v10/index.html) ( TwilightBluesy )

幾つかの方法を比較したトコロ
この方法が一番 扱いやすいのでは と 思う。

cG20.sh or cG20.bat を
コマンドライン or Application から call 。

“`php:cG20.php

元記事を表示

PHPでZIPファイル内のCSVファイルをそのまま読み取る

# 結論

:::note info
– [fw3/streams](https://packagist.org/packages/fw3/streams)を`composer require fw3/streams`して使おう。
– **[実装](#実装)** にあるサンプルコードをコピーして必要なところだけ書き換えれば終わり。
:::

:::note warn
– PHP7.2.0未満(下限PHP5.3.3)で解決したい場合は[fw3_for_old/streams](https://packagist.org/packages/fw3_for_old/streams)を利用してください。(`composer require fw3_for_old/streams`)
– [fw3/streams](https://packagist.org/packages/fw3/streams)および[fw3_for_old/streams](https://packagist.org/packages/fw3_for_old/streams)共にPHP8.3.1まで動作確認済みのため、P

元記事を表示

Laravelの環境構築してて、nginxで頭を抱えてしまっている人向け

🚨 記事内容精査中です。

# ■ 実際にあった未経験エンジニアの物語

#### 1章 Webサーバーソフトウェアを知る

あなたはプログラミングの世界に新たに足を踏み入れ、Webアプリケーションを開発する際にはWebサーバーソフトウェアが必要だということを学びました。このWebサーバーソフトウェアは、インターネット上でユーザーとアプリケーションの間の通信を担う重要な役割を果たすと理解しました。[^webサーバーソフトウェア]

#### 2章 Laravelプロジェクトの始動

あなたはLaravelというPHPフレームワークを使い始め、自身のプロジェクトを立ち上げます。すると、ブラウザ上であなたのプロジェクトのページが表示されていることに気づきます。この時点で、あなたはまだ専用のWebサーバーソフトウェアを設定していないはずです。

#### 3章 誤解

「LaravelはWebサーバーソフトウェアがなくてもなんとか上手く動くのだろうか?」という疑問が浮かびましたが、なんかうまく動いているし、深くは考えませんでした。
(実はあなたの知らないうちにPHPのビルトインサーバー[^

元記事を表示

PHPのシングルクオーテーション(‘)とダブルクオーテーション(“)の違い

# 初めに
PHPでは、文字列を表すためにシングルクオーテーション(’)とダブルクオーテーション(”)の両方が使用できますが、これらの間にはいくつかの重要な違いが存在します。
これらの違いを理解し、適切な場面で使い分けることが、より効率的で読みやすいコードを書く鍵となります。

# 文字列の解釈

1\.シングルクオーテーション
文字列がそのままの形で解釈されます。変数は展開されず、エスケープシーケンス(例えば\nや\t)も解釈されません。ただし、シングルクオート自体をエスケープするための\’とバックスラッシュ\\は例外です。

“`php
$name = ‘World’;
echo ‘Hello, $name!’; // 出力: Hello, $name!
“`

2.ダブルクオーテーション
文字列内の変数はその値に置き換えられ、エスケープシーケンスも解釈されます。これにより、変数の値を文字列内に直接挿入することが可能になります。

“`php
$name = “World”;
echo “Hello, $name!”; // 出力: Hello, World!
“`

#

元記事を表示

deptracのバージョンアップ(0.11.1 → 1.0.2)

# 概要

アーキテクチャ品質保存ツール`deptrac`のバージョンアップ(0.11.1 to 1.0.2)を行ったので、ツール概要と修正箇所をまとめる

## どんなツール?

> Deptracは、PHPのための静的コード解析ツールであり、プロジェクト内のアーキテクチャの意思決定をコミュニケートし、視覚化し、強制するのに役立ちます。クラスに対してアーキテクチャのレイヤーと、それらに適用するべきルールを自由に定義できます。
たとえば、Deptracを使用して、プロジェクト内のバンドル/モジュール/拡張がお互いに本当に独立していることを確認し、再利用しやすくすることができます。
Deptracは、CIパイプラインで使用でき、プルリクエストが定義したアーキテクチャルールを違反していないかどうかを確認できます。オプションのGraphvizフォーマッタを使用すると、レイヤー、ルール、および違反を視覚化できます。

– 要はクリーンアーキテクチャのレイヤーや依存関係、命名規則について静的解析してくれるツール
## 実行コマンド

`vendor/bin/deptrac analyse`

元記事を表示

OTHERカテゴリの最新記事