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

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

[PHP] ある連想配列の一部だけキー付きで取り出して新たな連想配列に移す

ChatGPTさんに教えてもらいました。
覚え書き用ですが参考になりましたら幸いです。

## ある連想配列

例えばこういう連想配列があるとします。
“` sample.php
$arr = [
‘a’ => $a,
‘b’ => $b,
‘c’ => $c,
‘d’ => $d
];
“`

この配列の一部だけ利用して、新たな連想配列として定義したい場合のやり方です。

## 新たな連想配列
この形に定義したいとします。
“` sample.php
$arr2 = [
‘b’ => $b,
‘c’ => $c
];
“`
## やり方

array_intersect_key関数を使用します。

“` sample.php
$arr2 = array_intersect_key($param, array_flip([‘b’, ‘c’]));
“`

###### $arrとarray_flip([‘b’, ‘c’])の両方のキーを比較し、重複するキー(’b’と’c’)のみを含む新

元記事を表示

MVCモデルの基礎知識

# はじめに

こんにちは!
社会人一年目の石川です。
記事をご覧いただきありがとうございます。

今回は、MVCモデルについてまとめました。

## 目次
1. [MVCモデルとは?](#mvcモデルとは)
1. [MVCモデルのそれぞれの役割](#mvcモデルのそれぞれの役割)
・[M(モデル)](#mモデル)
・[V(ビュー)](#vビュー)
・[C(コントローラ)](#cコントローラ)
3. [MVCモデルのメリットとデメリット](#mvcモデルのメリットとデメリット)
・[MVCモデルのメリット](#mvcモデルのメリット)
・[MVCモデルのデメリット](#mvcモデルのデメリット)
4. [最後に](#最後に)

## MVCモデルとは?
MVCモデルはアプリ開発においてコードを整理する考え方のことです。

MVCは、モデル(Model)、ビュー(View)、コントローラー(Controller)の頭文字を取ったもので、それぞれの役割を明確に分離します。この3つが独立して連携することで、コードの管理が容易になり、開発効率が向上します。

つまり、役割によってどこに何のプ

元記事を表示

【paizaラーニング】レベルアップ問題集 素数メニュー 「素因数分解」 PHP 

### 問題

https://paiza.jp/works/mondai/prime_number_primer/prime_number_primer__prime_factorization?language_uid=c

### 解答

素因数分解の条件式`$i * $i <= $num`の必要性 ##### 1.処理時間の短縮 `num` の平方根よりも大きい数は、`num` の素因数になり得ません。なぜなら、平方根よりも大きい数の積は常に `num` より大きくなるからです。 例えば、`num = 15` の場合、平方根は約 `3.87` です。つまり、4 以上のすべての数は `15` の素因数候補から除外できます。 この条件式を導入することで、無駄なループ処理を大幅に削減でき、処理時間を短縮することができます。 ##### 2.探索範囲の絞り込み `i * i <= num` という条件は、`i` が `num` の最大限素因候補となり得る値を明確に示しています。 例えば、`num = 20` の場合、この条件式は `i <= 4` となり、`i` として検

元記事を表示

【備忘録】Composerでautoload-devで定義したクラスが参照できない

# 初めに
composerを使ってアプリケーションを作成していた際、`composer.json`の`autoload-dev`で定義したクラスが読み込めませんでした。
解決したので備忘録を残します。

# TL;DR
* **`autoload-dev`は、ルートの`composer.json`上でしか定義できない**
* ルートとは、composerコマンドを実行する場所にある`composer.json`のこと

# 問題
PHPフレームワークFlowにて、単体テストを実装しようとしていました。
Flowには、PHPUnitのクラスを継承した単体テスト用のBaseクラスがあり、そのクラスを継承してテストケースを作成しようとしました。

実際にテストケースを作成し、実行してみたのですが、、、

“`sh
$ .\bin\phpunit .\Packages\Application\Neos.Welcome\Tests\Unit\Domain\Model\UsersTest.php

PHP Fatal error: Uncaught Error: Class “Neo

元記事を表示

Unable to access configuration file (delegates.mgk) 発生

# はじめに
謎が残ったままですが解決したのでメモです。

エラーが発生したソースは以下です。
“`php
use Gmagick;
:
$file = $request->file(‘data’);
if (0 == strcmp($mime_type, ‘application/pdf’)) {
// pdf -> jpg変換
$gmagick = new Gmagick();
$gmagick->setResolution(150, 150);
$gmagick->readimage($file->getRealPath()); <= ここ! ``` # 動作環境 + Laravel Framework 5.8.22 + AWS EC2 (Amazon Linux) + PHP 7.2.17 # 前提 AWS EC2のコピーを作成し、作成された新しいEC2上で上記の処理を実行 **EC2のコピーを作成する手順の違いでエラーが発生するパターンと発生し

元記事を表示

PHPのエラーPHP Notice: Undefined index: REQUEST_METHODについて

PHPで以下の構文エラーが出た場合の解決方法を記載します

PHP Notice: Undefined index: REQUEST_METHOD in /var/www/html/create.php on line 35

if(!empty($_SERVER[‘REQUEST_METHOD’] === ‘POST’)){
$company = [
‘title’ => $_POST[‘title’],
];

※インデックスの異常であるが、
ローカル環境(アパッチ)でデバック上ではデーターのやり取りは正常。

# 解決方法
このエラーは、$_SERVER[‘REQUEST_METHOD’]が存在しないために発生しています。これは通常、スクリプトがWebサーバー環境外で実行されるか、正しいHTTPリクエストがされていない場合に起こります。

このコードにはいくつかの問題があります。

比較の括弧位置:
1. $_SERVER[‘REQUEST_METHOD’] === ‘POST’ の結果が true か false となりますが、それを empty

元記事を表示

ServBay 1.3.5 公式リリース: 重要なアップデートと改善

2024年6月1日 – ServBayチームは、最新バージョン1.3.5のリリースを喜んで発表します。このアップデートには、主要なソフトウェアパッケージのアップグレード、ServBay RuntimeおよびServBay Development Libraryの更新、そしてユーザーにより効率的で便利な体験を提供するための新機能と重要な最適化が含まれています。

![15291698830582_.pic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782472/6d6d18fb-b7cc-1d64-ea4d-187925d74b1b.jpeg)

### 主なアップデートと最適化

パフォーマンス向上のため、[ServBay](https://www.servbay.com) 1.3.5では、Opcache、XDebug、およびMongoDB PHPモジュールがデフォルトでは読み込まれなくなりました。これらのモジュールは、/Applications/ServBay/package/etc/phpの

元記事を表示

php7* -> php8* に上げた時の、urlencode 対策

## ■背景
・phpを7.* から 8.* にアップデートしたら、urlencode()関数がエラーになったので、自作関数を作成し、一括置換して対応。

## ■エラーメッセージ
#### ・Deprecated: urldecode(): Passing null to parameter #1 ($string) of type string is deprecated in C:\************* .php on line 9999

![スクリーンショット (1169).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/9caa669a-0fdd-5e2a-1d2d-971a32124236.png)

## ■ 対応関数
“`function.php

// === PHP 8 対応 urlencode()
function UrlEncode_Val_Check($data)
{
if ($data != “”) {
$data_encode

元記事を表示

PHPアプリケーションで、標準出力の文字の色やフォーマットをカスタマイズする

# 前提

Symfonyがインストールされていること。(LaravelやCakePHPなどにはインストールされているはずです。)

# 概要

SymfonyのConsoleOutputクラスを使って、簡単に標準出力のフォーマットを指定できたのでその方法と具体例を軽く紹介します。

# 具体例

“`php
$output = new \Symfony\Component\Console\Output\ConsoleOutput();

$output->writeln(‘これは情報メッセージです。‘);
$output->writeln(‘これはコメントメッセージです。‘);
$output->writeln(‘これは質問メッセージです。‘);
$output->writeln(‘これはエラーメッセージです。‘);
$output->writeln(‘これはカスタムカラーのメッセージです。‘);
$output->writ

元記事を表示

2024年のモダンPHP開発

2024年においても、PHPはモダンなウェブ開発における有力な選択肢であり続けています。TIOBEインデックスでの順位は低下したものの、PHPは依然として最も広く使用されているウェブサイトプログラミング言語の一つです。その実用性、効率性、そしてパフォーマンスの向上により、PHPは堅実な選択肢となっています。例えば、最新のPHPバージョン(PHP 8.1以降)は、PythonやNode.jsと競合する速度向上を示しており、シナリオによってはそれらよりも高速です。PHPの開発スピードもPythonに匹敵し、豊富な組み込み関数とライブラリにより迅速な開発が可能です。さらに、大規模なアプリケーションの展開も比較的容易であり、数百万のリクエストを処理するアプリケーションでも、適切なエンドポイントキャッシングを行うことで効率的に負荷分散が実現できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782463/88ad9c51-4ba2-bafa-f57f-fd2ca78ea131.png)

元記事を表示

独習PHP学習メモ(Chapter3-比較演算子・論理演算子)

[PHP8技術者認定初級試験取得](https://www.phpexam.jp/summary/novice8)を目指しており、無事合格できました!

資格試験用に学習した、公式の認定教材である[独習PHP第4版](https://www.amazon.co.jp/dp/4798168491/)の内容を知識定着のためアウトプットした記事です。

:::note info
過去の投稿はこちら
:::

https://qiita.com/mumucochimu/items/1607809dc28dd026df6d

https://qiita.com/mumucochimu/items/316dd9c83bda14fdfaf8

https://qiita.com/mumucochimu/items/a5ddce721847e863d9d3

https://qiita.com/mumucochimu/items/ec0c589db180ee185656

## 比較演算子

左辺と右辺の値を比較し、true / false を返します。
参考:https://www.php.net

元記事を表示

【個人開発】「住所なう!」というブラウザで今自分がいる場所の住所を出すだけのシンプルなアプリを作成しました!

**これは下記記事の本人による転載です。**

https://ogatomo.net/blog/2024/06/02/jyusyonow/

こんにちは。中学1年の小川です。

今日は新しいアプリを作ったので紹介します!

## 「住所なう!」とは?

その名も住所なう!です。

平成中期のネーミングセンスですね(彼は2011年生まれです)

このアプリは今いる場所の郵便番号と住所、ビルやマンション・アパートなどの建物の場合は建物名を表示するアプリです。

下のリンクから実際に使ってみることができます。

[https://ogatomo.net/jyusyonow/](https://ogatomo.net/jyusyonow/?utm_source=qiita&utm_medium=button&utm_campaign=introduction)

## 操作方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518724/226f75c5-b49d-f4e9-edc2-43

元記事を表示

独習PHP学習メモ(Chapter3-代数演算子・代入演算子)

[PHP8技術者認定初級試験取得](https://www.phpexam.jp/summary/novice8)を目指しており、無事合格できました!

資格試験用に学習した、公式の認定教材である[独習PHP第4版](https://www.amazon.co.jp/dp/4798168491/)の内容を知識定着のためアウトプットした記事です。

:::note info
過去の投稿はこちら
:::

https://qiita.com/mumucochimu/items/1607809dc28dd026df6d

https://qiita.com/mumucochimu/items/316dd9c83bda14fdfaf8

https://qiita.com/mumucochimu/items/a5ddce721847e863d9d3

## 代数演算子(算術演算子)

主な代数演算子は以下です。

| 演算子 | 概要 | 例 |
|:—–:|:—–:|:—–:|
| + | 和 | 1+2 ⇨ 3 |
| – |

元記事を表示

Laravelで見る用語まとめ

## MVCとは
Webアプリを実装するための効率的な方法の一つ
Webアプリの構造を整理するためのデザインパターン
コードの可読性やメンテナンス性を向上させる。

1. Model
* データベースとのやり取りを担当。
* データの保存、取得、更新、削除など。
* Eloquent ORM(Object-Relational Mapping)を使って、データベースのテーブルとオブジェクトを簡単に対応付けることができる。
1. View
* ユーザーに表示される部分を担当。
* HTMLやCSSを用いてユーザーインターフェースを作成できる。
* Bladeテンプレートエンジンを使って、動的なコンテンツを簡単に生成できる。
1. Controller
* ユーザーからのリクエストを処理し、適切なレスポンスを返す部分を担当。
* ルーティングを通じて特定のアクションにリクエストを割り当て、モデルとビューを連携させる。

## マイグレーションとは
SQLを直接使わなくても、データベースを管理できるLaravelの仕組み
データ

元記事を表示

ServBayの紹介と使用方法

### ServBayについて
[ServBay](https://wwww.servbay.com)は、ユーザーフレンドリーでローカライズされたオールインワンのWeb開発環境です。開発者が数分でローカライズされた[開発環境](https://wwww.servbay.com)を展開できるようにし、Web開発者(PHP、Node.jsなど)、テストエンジニア、小規模チームが直面するインストールとメンテナンスの課題を解決します。ServBayはWebサーバー、データベース、メールサーバー、その他のWeb開発ツールを統合し、開発者のワークフローを合理化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782472/9029db7f-3f39-22d9-478e-452414d1584b.png)

ServBayの主要な機能には、複数のPHPおよびNode.jsバージョンの統合サポート、カスタマイズ可能なドメイン、無料のSSLが含まれます。コマンドラインインターフェース、統一された

元記事を表示

LaravelでのEnum型の使い方まとめ

# 記事を書いた動機

以下の経緯でEnumを社内に布教したかったから。

– Laravelを使う際、社内で定数をどこに書くか明確なルールが無かったので定義したかった
– configに書くか、Modelに書くか、定数用のクラスを作成してそこに書くか3つ案があったが、以下の理由によりEnumで管理するようにしたいと思った
– `config()`は定義ジャンプができないので定数の値を見に行くのが面倒
– 定数は条件分岐とかでいろんな場所から呼ばれるので、定数使うためだけにModelを呼ぶのはあまりやりたくない
– 例えばBladeから`@foreach(App\Models\Order::STATUS_LIST as $key =>$val)` みたいに呼ぶのはいまいちかなと
– 定数用のクラスで管理する場合、`app/Const/GlobalConst`みたいに普通のクラスで書いてもいいが、PHP8.1以上ならEnum型が使えるので今後は、Enumで管理する方が色々便利かなーと思った

# この記事で書くこと

– Laravelで定数をEn

元記事を表示

PHPフレームワークFlowのソースにPHPunitを試す

# 初めに
Flowでソースを書いてきましたが、UnitTestはまだ書いたことがありませんでした。
今回は、PHPフレームワークFlowでUnitTestを書く方法をまとめます。

# PHPunit
PHPUnitとは、PHPのUnitテストツールです。
豊富なAssertメソッドを有しているのが特徴です。

https://phpunit.de/index.html

# PHPUnit使ってみる
ということで、さっそく使ってみましょう。
今回UnitTestを作成するのはこちらのUsersクラスです。
getName()のUnitTestを作成したいと思います。

“`Users.php

元記事を表示

【備忘録】Laravel10でのPHPUnitの使い方

エンジニアとして働きながら個人でLaravel10を触っています。記事を読みながら実装を進めていくとPHPUnitに関する記事がまとまっていない状態でした。そのため備忘録としてQiitaにまとめてみました。

## 環境
Windows10
ubuntu(wsl) 22.04.4 LTS
Laravel 10.48.12
PHP 8.3.7
DB sqlite3

## PHPUnit とは
PHPUnitとはPHP言語の単体テストを行うためのフレームワークです。
変更した箇所で要件を満たしていて、既存の機能に影響がないかを自動で確認することができます。

## PHPUnitのメリット・デメリット
### メリット
– モジュールが結合される前にテストができるため、問題の原因特定が容易
– コードの作成と並行してテストコードを書くため、コード理解が深まる
– PHPUnitを使うことで自動化できる
→コマンドのみで動作確認が可能

### デメリット
– 開発者の開発負担が高くなる

## UnitとFeature
testsディレクトリ配下にはUnitとFeatureがあり

元記事を表示

【Docker環境構築】Laravel10 + Nginx + PostgreSQL + PgAdmin

# はじめに
Laravel+Nginx+MySQL+phpmyAdminの環境構築例は多いものの、Laravel+Nginx+PostgreSQL+PgAdminの環境構築例はWeb上に少なかったので、備忘録として残すことにしました。

# 開発環境
– Docker Desktop
– PHP 8.3.3
– node v20.11.1
– Laravel Framework 10
– Composer 2.7.1
– PostgreSQL 14
– PgAdmin4
– WSL2

# ディレクトリ構成

全体のディレクトリ構成は以下です。

“`
/(ルートディレクトリ)
├── .docker
| ├── db
| |── nginx
| | |── default.conf
| | └── Dockerfile
| |── pgadmin4_data
| └── php
| |──Dockerfile
| └──php.ini
│── src
│ └──(Laravelのプロジェクトデ

元記事を表示

ソケット通信サーバーアプリのフレームワークをLaravelと連携してみました

# はじめに

ここでは以下の記事でご紹介しているようなsoket-managerフレームワーク上のプロジェクトをLaravelへ連携する方法をご紹介します。

[>>`マインクラフトと連携できるWebsocketサーバー`](https://qiita.com/glasses_seven/items/7a490dc8694348505a53 “マインクラフトと連携できるWebsocketサーバー”)

[>>`Websocketサーバーの開発環境`](https://qiita.com/glasses_seven/items/fa9226356815e69e4076 “Websocketサーバーの開発環境”)

[>>`ソケット通信サーバーアプリのフレームワーク`](https://qiita.com/glasses_seven/items/d712808b985aa5253d05 “ソケット通信サーバーアプリのフレームワーク”)

以降では新規プロジェクトを連携する場合と既成プロジェクトを連携する場合に分けて話を進めます。
それぞれの作業の内訳は以下の通りです。

### 【新規

元記事を表示

OTHERカテゴリの最新記事