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

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

参加するプロジェクトのリポジトリクローンしてDB接続するのにハマったお話

# ハマるまでの概要と流れ
新しく参加するプロジェクト(PHP/Laravel10)のリポジトリをクローン→.envファイルに必要事項記載してDB接続しようとした際にmysqlが立ち上がらない沼り事案(MacbookM1使用)

# 結論と実施したこと
いろいろ細かな権限だの設定ファイルの修正だの必要な場合はあるのですが、**「結果的にこうやれば一発で行けたのか」** という流れが以下

1. mysqlアンインストール
`brew uninstall mysql`
2. mysqlインストール
`brew install mysql`
3. mysql接続
`brew services start mysql` ←これがポイント

### アンインストール→再インストール→`mysql.server start`で接続
![スクリーンショット 2024-06-17 15.33.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492127/929d6842-e49a-cf75-0f96-7d52

元記事を表示

Yii2フレームワークことはじめ その2 データベースを使ったユーザー登録と認証の実装

# イントロダクション
[前回の記事](https://qiita.com/Fu3nori/items/0d602634ae0592581ce6)でDBの作成と接続設定は完了しました。
さて、問題はデータベースを使ったユーザー登録とログイン・ログアウトの方法です。
デフォルトでYii2にはUserモデルとLoginFormモデル(app設置先/models)そしてcontrollers/SiteController.phpにloginアクションとlogoutアクションが用意されていますがこれはハードコードされたadminアカウントを返すだけなのでDBにUserテーブルを用意してユーザー登録とログイン、ログアウトを行うことができません。
また、認証周りは予約語が多く、変数の定義やカラムの定義でシステムが落ちる事もあり、ここもはまりどころです。

加えて公式ドキュメントにも認証についてのトピックスは合っても実際の実装方法までは書かれていないので、ニックネームとメールアドレス、パスワードを登録し、メールアドレスとパスワードでログイン認証を行うサンプルコードを記載します。

元記事を表示

初めてのチーム開発

## はじめに
今回、プログラミング初心者4人で行った初めてのチーム開発プロジェクトについての記事です。
テーマは『自分たちの役に立つものを開発する』

## チーム開発の流れ
1. アイデア決め
1. スライド作成、要件定義
1. 設計、タスク出し
1. 環境構築
1. 実装、プレゼン準備
1. プレゼン

## アイデア決め
まず、それぞれ一人が一つ抱えている課題のアイデアを出すことにしました。

私はFigmaを使うことを提案し、付箋を使ってアイデアを書き留め、その中から一つを選ぶことで決める流れになりました。
アイデアの課題、目新しさ、難易度で決めていく中で良い点、そうではない点がそれぞれにあり、賛同や衝突もありながら一つに決めるのが困難になりました。
そこで他のチーム開発ではどのようなアイデアがあったのかを見て、課題、目新しさ、実装難易度を改めました。
その後、4人の共通な新たな課題として「日々つけている日報をわかりやすく一目で振り返りたい。」ということが上げられました。
そこからはその課題を解決するためのアイデアがどんどん出てき方向性が決まっていきました。

ここで方向が

元記事を表示

【CakePHP5】PHPStanをGitHubActionsで使う

# はじめに

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

前回PHPStanをローカルでコマンドを打って実行したので、今回はPushした時にGitHub上で実行するようにしようと思います。

https://qiita.com/keitaMax/items/77df412e05a537571549

# GitHubActionsの設定ファイル

`.github/workflows`ディレクトリを作成し、`phpstan.yml`ファイルを作成します。

“`yml:phpstan.yml
name: LaraStan
on: [pull_request]

jobs:
phpstan:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
steps:
– uses: actions/checkout@v2
– name: dokcer-compose up
run: |
docker

元記事を表示

Laravelで行う依存性の注入(3層アーキテクチャでの実装)

# はじめに
今回は、Laravel11での依存性の注入(DI)を、3層アーキテクチャを採用して行ってみたのでその備忘録です。

# 環境
– Windows10
– Ubuntu
– Laravel11

また、フロント側は別アプリケーションにしているので、APIを用いての開発を行います。

# 今回用いたアーキテクチャ
今回は3層アーキテクチャを採用しています。
(Controller、Service、Repository)
まずリクエストがきたら、ルーティングの設定を通じて、適切なコントローラメソッドを呼び出します。

– **Controller層**
– ユーザーからの入力を受け取り、サービス層に処理を依頼する
– リクエストの検証やレスポンスの生成を行う
– **Service層**
– 業務ロジックを担当する
– ビジネスルールの適用やデータの加工を行う
– リポジトリ層からデータを取得し、必要な処理を行ってコントローラ層に結果を返す
– **Repository層**
– データアクセスロジックを担当する
– デ

元記事を表示

なぜ LAMP が使われるようになったのか

## LAMP が使われるようになった理由

LAMP は、Webサーバーを構築するためのソフトウェアスタックの略称です。

* **L**inux:オペレーティングシステム
* **A**pache:Webサーバー
* **M**ySQL:データベース
* **P**HP:プログラミング言語

LAMP が広く使われるようになった理由は、以下の通りです。

**1. 無料でオープンソース**

LAMP を構成するソフトウェアはすべて無料でオープンソースです。そのため、ライセンス費用を気にせずに利用することができます。これは、特に中小企業や個人事業主にとって大きなメリットとなります。

**2. 安定性と信頼性**

LAMP は長年にわたって多くのユーザーに利用されており、安定性と信頼性が証明されています。また、オープンソースであるため、多くの開発者がコードをレビューしており、セキュリティ面も比較的安全です。

**3. 拡張性と柔軟性**

LAMP はモジュール式のアーキテクチャを採用しており、必要に応じて他のソフトウェアを追加したり、設定を変更したりすることができます。そのた

元記事を表示

僕なりの PHP 備忘録

# バージョンの確認方法

– 既にインストールされているバージョンを表示し、そこから選択できる

“`bash
$ sudo update-alternatives –config php
“`

# 設定ファイル(`php.ini`)について

## 画像アップロードの際に影響を与える設定値

– `upload_max_filesize`
– 単一のファイルの最大アップロードサイズを定義する。これ以上のサイズのファイルはアップロードできない。
– `post_max_size`
– POSTリクエストを通じて送信できるデータの最大量を定義する。この設定は `upload_max_filesize` よりも大きい値に設定する必要がある。

元記事を表示

デプロイしたら、ヘッダーのロゴが大きくなってしまった

# 現状
デプロイを行ったら、ロゴ画像が大きくなってしまった。
お気に入りボタンや、マイページリンクなども隠れてしまった。

デプロイ前
![デプロイ前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754808/a7cd65a8-eff9-b229-abc3-b48330a112f2.png)

デプロイ後
![デプロイ後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754808/3b2761d1-2a9c-7966-d7af-24b6286157aa.png)

# デベロッパーツールでの確認

“` “`
というコードがheadタグ内に記入されており、これを無効にすればデプロイ前と同じ状態になる

元記事を表示

Yii2フレームワークことはじめ その1 インストール後にやっておくべき設定 DB設定・コンタクトフォーム・ルーティング

# イントロダクション
PHPフレームワークは色々ありますが局所的に流行っている物にYii2があります。
いっとき、Yiiシリーズはドキュメントが公式サイトのものしかなかったり記述もラフだったので覚えれば早く実装できるフレームワークにも関わらず理解するのが大変だったりしましたが、ここ最近(2024年現在)では公式ドキュメントが非常によく整備され学習しやすくなりました。

そんな中でもわかりにくかったり公式に書かれていなかったりする所、導入後にやっておくとよいところを書いていこうと思います。

第一回は設定ファイルの記述について書いていこうと思います。

## DB設定
MVCフレームワークでは当然DB接続設定が必要ですが、この設定は以下の場所にありますので以下のように設定します(コメント行参照)

設置ディレクトリ\config\db.php
“`rb
return [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=yii2_my_profile’,

元記事を表示

Laravelで準備されているinspireコマンドが誰得過ぎた

PHPのWebアプリケーション向けのフレームワークのLaravelは便利な機能が多いですが、その中でも特に誰得だと感じたのが`php artisan inspire`コマンドです。

試しに実行してみると

“`shell
$ php artisan inspire
I have not failed. I’ve just found 10,000 ways that won’t work. – Thomas Edison
“`

このコマンドがしていることをソースコードリードをして理解してみます。

(ソースコードリードの一例として生暖かい目で見守ってください)

## Laravelのコマンド

11.xのLaravelのソースコードにはroutes/console.phpに以下のように記述されています。

“`php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;

Artisan::command(‘inspire’, function () {
$this-

元記事を表示

デプロイしたけどどこでデータベースを見るのか

:::note alert
結局解決しなかったので、より詳しくなって解決できるようになったら追記します。
:::

# 概要
・ローカル環境ではphpMyadminでデータベースを操作していたが、herokuにデプロイした後のデータベースはどこで操作したらよいのかわからなかった。
・記事の投稿練習をしたいと思った。
・laravel-adminのデータがないので、管理者画面にログインできない状況。なので、ローカル環境のデータベースから楽にコピペできればと思っていた。

# 環境(ざっくり)
* herokuにデプロイする際、JawsDB Mariaというアドオンを追加しています
* Windows
* Laravel
* PHP

# 解決方法
1. オンラインでphpMyadminを使用する
* phpMyadminの[公式サイト](https://www.phpmyadmin.net/)で提供されているオンラインバージョンを利用する
* オンラインバージョンは、直接ブラウザからデータベースにアクセスできる便利な方法
* 以下の手順でオンラインphpMy

元記事を表示

9年前に作った絵文字サイトを作り直した

メモ帳に手打ちで作った絵文字サイトを、9年の時を経てリニューアルしました‼
ちなみにほぼChatGPTが作りました🤖✨

## 旧サイト

### スクショ
ウェブアーカイブにありました(*´・ω・)ノ=͟͟͞͞🍣=͟͟͞͞🍣=͟͟͞͞🍣=͟͟͞͞🍣

https://web.archive.org/web/20160714003153/http://emoshare.jp/search/index.php?page=3
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122701/ca8cebce-88b3-ea56-73dd-7a7825d5be53.png)

### サイト概要
絵文字を使ったAAを検索したりTwitterに投稿できる

### 技術
– 言語: PHP5.4
– DB: MySQL5.6
– フレームワーク: なし
– エディタ: メモ帳🤔❓

プログラミングなんもわからん状態なのでページネーションの処理も自力でゴリゴリ書いてました…🥹🥹🥹

### 閉鎖し

元記事を表示

【CakePHP5】PHPStanを使う

# はじめに

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

前回DockerでCakePHPの環境を整えて、最初の画面表示まで行いました。

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

今回はPHPStanを使用できるようにしたいと思います。

# インストール

以下のコマンドでインストールします。

“`
composer require –dev phpstan/phpstan
“`

# 実行

“`
docker compose exec app bash
“`

上のコマンドでコンテナの中に入った後、以下コマンドでPHPStanを実行することができます。

“`
./vendor/bin/phpstan analyse
“`

実行すると以下のように解析をしてくれます。

“`
root@4ab649b0155e:/app# ./vendor/bin/phpstan analyse
Note: Using configuration file /app/phpstan.neon.
⚠️

元記事を表示

【PHP】boolean型聖書

はじめに

こんにちは、まりあ様です^^

PHP触ってて衝撃的だったことをメモがてら、残します。

echoでのboolean型出力

例えば、期待値としてtrue、falseが返却される以下のソースコードがあるとします。

“`
$testTrue = true;
$testFalse = false;

echo $testTrue; // 想定している返却値は、true
echo $testFalse; // 想定している返却値は、false
“`

これを実際に出力すると、、、、

“`
1 // true
“” // false
“`

となるんです。。。。
もうこれ、JavaScriptとかかじったくらいで、console.logでとりあえずなんでも中身見る人なので、衝撃でした。
なんで、1とか空文字で返ってきてんの?boolean型のはずなのに?とか混乱しちゃいましたw

var_dumpでの出力

var_dumpで出力するとどうなるか?

元記事を表示

Laravelでの論理削除に関するガイド

## 論理削除の概念
論理削除は、データベースのレコードを物理的に削除する代わりに、削除されたことを示すフラグ(通常は`deleted_at`カラム)を設定する方法です
コレにより、データは実際にはデータベースに残り続けますが、アプリケーション上では削除されたものとして扱われます

## メリット

1. データの復元が容易
– 誤って削除したデータを復元するのが簡単です
1. 履歴管理
– 削除の履歴を追跡でき、監査やログ管理が容易になります
1. 参照整合性の維持
– 削除されたレコードを参照しようとしても有効なデータとして参照できる
– データを完全に削除(物理削除)した場合は参照できなくなってしまいます

## デメリット

1. ストレージ増加
– 完全にデータを削除しないため、ストレージが増加します
1. クエリの複雑化
– 削除されたレコードを無視するための条件を追加する必要があります
1. パフォーマンスの低下
– 大量の論理削除データがあると、パフォーマンスが低下する可能性があります

## 論理削除を使う場

元記事を表示

統一プロジェクト開発環境:ServBayで十分

### 紹介

現在の開発環境は完全に統一されておらず、細部にいくつかの違いがあります。これらは90%の作業には影響しないものの、環境やバージョンの不一致により時々問題を引き起こすことがあります。

**1. 依存関係の問題**
– 異なる開発環境では、PHP、Composer、Node.jsなどのツールの異なるバージョンがインストールされる可能性があり、依存関係の競合や互換性の問題を引き起こすことがあります。
– ライブラリやフレームワークの異なるバージョンが、異なる環境でコードの動作を不一致にさせることがあります。

**2. 設定の違い**
– 環境変数、PHP設定ファイル(例:php.ini)、Apache/Nginx設定ファイルなどが異なる場合、ある環境では正常に動作するコードが別の環境では動作しないことがあります。
– データベース設定、キャッシュ設定なども環境ごとに異なり、アプリケーションのパフォーマンスや安定性に影響を与えることがあります。

**3. オペレーティングシステムの違い**
– すべての開発者がMacを使用しているとしても、macOSのバージョ

元記事を表示

PHPフレームワークFlowで楽観ロックを実装する

# 初めに
PHPフレームワークFlowで楽観ロックを実装しようとした際、FW側で何かメソッドなど用意しているのかどうか気になりました。今回はその結果をアウトプットします。

# Doctrineの楽観ロック実装方法
PHPフレームワークFlowはDoctrineというORMを標準で利用しています。
Doctrineには楽観ロックを行うためのメソッドが最初から用意されています。

https://www.doctrine-project.org/projects/doctrine-orm/en/3.2/reference/transactions-and-concurrency.html#optimistic-locking

一部サンプルソースを抜き出してきました。
それぞれ、モデルクラスと楽観ロックを利用するクラスです。
“`php
class User
{
// …
#[Version, Column(type: ‘datetime’)]
private DateTime $version;
// …
}
“`

“`php
use

元記事を表示

Simple WordPress Membershipのメッセージ変更

# 概要
Simple WordPress Membershipを使って会員機能を実装する際に
ログインが必要なページに表示されるメッセージの翻訳が
イマイチだったので今回変更しました。

# 実際のコード
“`functions.php
add_filter(‘swpm_not_logged_in_post_msg’, ‘custom_not_login’);
function custom_not_login($text){
// ログインページのURLを取得
$login_url = SwpmSettings::get_instance()->get_value(‘login-page-url’);
// 新規登録ページのURLを取得
$registration_url = SwpmSettings::get_instance()->get_value(‘registration-page-url’);

// カスタムメッセージを返す
return ‘

本コンテンツは会員専用になります。
‘ . ‘既に会員の方は# MySQL入門#2!!MySQLの基礎!!はじめてのSQL文【リレーショナルデータベース / PHPによるWebアプリケーション開発】

皆さんこんにちは、KoenigWolfです。今回はMySQL入門の続きをお届けします。前回はMySQLが公式サイトで配布しているExampleデータベースから「ワールドデータベース」というデータをインポートし、MySQLの基本的な操作について学びました。今回は、そのワールドデータベースを使って実際にSQL文を操作してみたいと思います。

## データの操作:基本のCRUD

まず、データ操作の基本としてCRUD(Create, Read, Update, Delete)の4つの操作があります。これらはそれぞれデータの作成、読み取り、更新、削除を意味します。これらの操作ができるようになれば、MySQLの入門としては十分です。

リレーショナルデータベースの特徴として、データの強い整合性と柔軟な検索機能があります。この2つの特徴を理解することで、MySQLの強みを活かしたデータ操作が可能になります。

## データの強い整合性

リレーショナルデータベースは、データの整合性を強く保つ機能を持っています。例えば、家計簿で今月の収支が合わないといった不整合が現実世界ではよくありますが、リレーシ

元記事を表示

WordPress標準制作フロー2024

## 現在のWordPress標準制作フロー

[5年前に記載したこちらの記事](https://qiita.com/koji-yamauchi/items/394c8e111dcd14a5d311)は、もう昨今の作業環境には適合しなくなりました。
2024年現在での弊社の標準的な制作フローをご紹介します。

[WordPressを扱うエンジニアに対する質問事項](https://qiita.com/koji-yamauchi/items/31edcfe443285b6d7194)で記載した回答例と一部重複しますが、より詳細に案内したいと思います。

## 前提事項

5年前の記載内容と前提事項は同様です。

* Web制作会社などでいちからサイトを制作することを想定
汎用テーマなどを使って簡易に構築するとかではなく、ガッツリとそのサイト専用のテーマを作成する
* それぞれのツールのインストール方法などは記載しない
Qiita内で丁寧に手順を記載している記事があるので検索してみてください

## ローカル開発環境

WordPressでサイト制作を決めた場合、携わるエンジニアは

元記事を表示

OTHERカテゴリの最新記事