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

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

僕なりの 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’, //dbn

元記事を表示

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でサイト制作を決めた場合、携わるエンジニアは

元記事を表示

Laravelベストプラクティスで実際の開発で使ってる箇所まとめ

## はじめに
Laravelベストプラクティスを改めて読んでどのプロジェクトでも認識すべきルールを軸にまとめてみました
逆に「プロジェクトによって運用方法が変わる」ような箇所は割愛した箇所は後述でリストにしてみました

## Laravelベストプラクティスの目的
Laravelは強力で使いやすいPHPフレームワークですが、
ベストプラクティスに従うことで、その真価を最大限に引き出すことができます。
このガイドでは、Laravelのコーディングスタイルや設計パターンにおけるベストプラクティスを紹介し、コードの品質向上、保守性の向上、そして開発効率の向上を目指します。

## 単一の原則
クラスとメソッドは1つの責任だけを持つべきです。

Bad:
“`php
public function getFullNameAttribute(): string
{
if (auth()->user() && auth()->user()->hasRole(‘client’) && auth()->user()->isVerified()) {
return ‘Mr.

元記事を表示

Laravel の Eloquent で bulk update するときに updated_at を更新しない方法

## 結論
`users` テーブルのモデル `User` に対し、 `status = 0` の行の `email` を `null` に更新する時の例。

“`php
$query = User::where(‘status’, ‘=’, 0); // 対象の検索条件
$query->getModel()->timestamps = false; // これにより updated_at の自動更新をとめる
$query->update([‘email’ => null]); // 更新
“`

バッチなどで一括更新したいが、更新日を変更したくない時に使う。

## 別解
### Eloquent ではなく Query\Builder を使う場合
updated_at は自動更新されない。

“`php
DB::table(‘users’)
->where(‘status’, ‘=’, 0)
->update([‘email’ => null]);
“`

### 対象を全部取得してループ
効率が悪いので非推奨。
“`php
$users = User::w

元記事を表示

【PHP】西暦から和暦・和暦から西暦を算出する

[西暦から干支・干支から西暦を算出する](https://qiita.com/Kokusui/items/79da562e4e979aea1825 “西暦から干支・干支から西暦を算出する”)に続き暦ネタ。
#### 西暦から和暦を算出
“`seireki2wareki.php
function seireki2wareki(string $datestr = NULL) {
//datestrで与えられた年月日(の属する暦年)の和暦年を返す ただし1968年~2100年の範囲
if (!$datestr) {$datestr = date(“Y-m-d”);} //datestrが空欄の場合は今日の和暦
else {
$datestr = mb_convert_kana($datestr, ‘n’); //全角数字は半角に直す
if (is_numeric($datestr = str_replace(‘年’, ”, $datestr))) {
//datestr(「年」がついていたら取る)が数値文字列の場合(=年のみで月日が入ってない場合)
if (

元記事を表示

あまり知られていないLaravelのコレクションメソッド #1: macro

# 背景

Laravelのコレクション、使いこなしていますか?

以下の記事を先程読んで面白いと思いました。

「あなたは使ったことがないLaravelのコレクションメソッド10選」

https://backpackforlaravel.com/articles/tips-and-tricks/top-10-collection-methods-you-have-never-used

ただし、英語で書かれていますし、各メソッドの説明が不十分に感じました。
ということで、以上の記事を翻訳する上で、それぞれのメソッドの活用方法を説明していきたいです!
今回はCollectionのmacroメソッドを解説します!

# macro: 全てのコレクションにカスタムメソッドを追加する

### 概要

スタティックメソッドになり、以下のように呼び出すことができます。

“`php
Collection::macro(‘カスタムメソッド’, function ($arg1, $arg2) {
// カスタムメソッド処理
});
“`

定義したカスタムメソッドはどのコレクションで

元記事を表示

PHPを使ってみよう:動的ウェブ開発の第一歩

# PHPの基礎

こんにちは、皆さん!今日は、PHPの基礎について一緒に学んでみましょう!PHPは、ウェブ開発でよく使われるサーバーサイドのプログラミング言語です。内定先の企業でもこの言語を使っていくので今回はPHPの基礎についてまとめてみようと思います。

## PHPって何?

まず最初に、PHPって何か知っていますか?PHPは「Hypertext Preprocessor」の略で、動的なウェブページを作成するための言語です。例えば、ログインフォームや掲示板、ショッピングカートなど、ユーザーが操作するインタラクティブなウェブページを作るのに使われます。

## PHPの基本構文

PHPのコードは、通常はHTMLの中に埋め込まれます。PHPのコードブロックは、`` というタグで囲まれます。さっそく簡単な例を見てみましょう。

“`php




PHPの基本

元記事を表示

OSSに初めてコントリビュートした話

## なぜコントリビュートしたのか?
普段色々なOSSにお世話になっているので、コントリビュートで貢献したい!と考え始めたことがきっかけです。

## 今回コントリビュートしたOSS
openEMRという電子カルテの管理などの医療業務系のOSSです。
公式サイト:https://www.open-emr.org/

## コントリビュートの流れ
ざっくりこんな感じです。
OSSごとに個別のルール・手順などがあるので、行ってみる場合はリポジトリのREADMEやInsightsなどのコントリビュート関連のドキュメントをまず確認してください。

・やりたいIssueを取る
・リポジトリをFork
・ブランチを切る
・対応してPR作成
・レビュー
・マージ(レビューでフィードバックがあれば対応)

## コントリビュートの概要
今回コントリビュートで修正したのは[こちらのIssue](https://github.com/openemr/openemr/issues/7393)で、新しいユーザーを追加する際に、emailログイン項目で入力した値が反映されない、というものでした。
これくらいの内

元記事を表示

OTHERカテゴリの最新記事