PHP関連のことを調べてみた2023年11月02日

PHP関連のことを調べてみた2023年11月02日
目次

rockylinux8.8のコンテナイメージでapache2.4+PHP7.4でサンプルページを表示させるまで

## コンテナ起動~apache導入まで

### イメージの取得
“`docker
docker pull rockylinux:8.8
“`

### コンテナの起動およびbashで接続
“`docker
docker run -dit -p 80:80 –name rocky rockylinux:8.8
docker exec -it rocky /bin/bash
“`

### パッケージの更新
“`bash
dnf -y upgrade
“`

### apache/PHPのインストール
“`bash
dnf -y module install httpd
dnf -y module install php:7.4
“`

### ssl.confのリネーム
そのままapacheを起動しようとするとSSL関連ファイルが無いと怒られる。
“`
[root@95c8a58dc340 /]# httpd -k start
AH00526: Syntax error on line 85 of /etc/httpd/conf.d/ssl.conf:
SSLCe

元記事を表示

手っ取り早くVSCodeでPHPファイルをブラウザ実行

# 準備

この手順は1回だけ行います。ファイルを実行しようとする際に毎回行うものではありません。

1. [PHP Extension Pack](https://marketplace.visualstudio.com/items?itemName=xdebug.php-pack)をインストールします。
1. VSCodeでphpファイルが入った**フォルダ**を開きます。このとき、ファイルではなくワークスペースとして開きます。
1. サイドパネルから**実行とデバック**タブを開き、`launch.jsonファイルを作成します`を押します。
1. PHPを選択します。
1. 以下の内容で`launch.json`を保存します。

“`json
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “Launch Built-in web server”,
“type”: “php”,
“request”: “launch”,

元記事を表示

Livewire3にアップグレードすると、ページネーションのクリック後のスクロール動作を指定できる

# Livewire3でそのままページャーを実装するとTOPにスクロールされてしまう
[前回記事](https://qiita.com/limtae/items/c5ea2ad6e48ba0baa62b “Livewire3.0にアップグレードするとモデルのプロパティを直接バインドできない件”)でも書いたが、Livewire3にアップグレードする際は色々と落とし穴が多いので、しっかりアップグレードガイドを読んでおいた方がいい。

今回遭遇したのは、ページネーションのボタンをクリックするとページTOPにスクロールされてしまう現象。これは、実際のページネーションのテンプレートを見ると一目瞭然。

“`
@php
if (! isset($scrollTo)) {
$scrollTo = ‘body’;
}

$scrollIntoViewJsSnippet = ($scrollTo !== false)
? <<

元記事を表示

【画像処理ソフト】ImageMagickとImagickインストールに関する備忘録的な何か

こんにちは。
一日一回OOM killer システムソリューション部のかわです。

先日LinuxマシンにImageMagickをインストールすることがあったんですが、
初見というのもあってこれがなかなか苦労しました。まず情報があんまり落ちてない。
落ちててもOSが違ったりバージョンが古かったり方法が全く違ったり。
パッケージ依存関係でエラーが出るたびに縺�o縺ゅ≠縺ゅ≠縺ゅ≠縺ゅ≠

これは、AlmaLinux8環境でうまくいった際の備忘録である。後世の誰かの役に立ちますように

▼ブログの詳細はコチラ▼

【画像処理ソフト】ImageMagickとImagickインストールに関する備忘録的な何か

***

■ 株式会社ビヨンド
・コーポレートサイト:https://beyondjapan.com​​​
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・X(Twitter):https://twitter.com/beyondjapa

元記事を表示

GitHub Copilot と一緒にPHPでガチャAPIを作ってみた!

初めまして。

記事を開いていただきありがとうございます。

システム開発部のしんたです。

ここしばらく ChatGPT などのAI技術の発展がすさまじく面白い時代になってきましたね。

そんな大AI時代に取り残されないために、今回は GitHub Copilot を使ってコーディングを行ってみました!

▼ブログの詳細はコチラ▼

GitHub Copilot と一緒にPHPでガチャAPIを作ってみた!

***

■ 株式会社ビヨンド
・コーポレートサイト:https://beyondjapan.com​​​
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・X(Twitter):https://twitter.com/beyondjapaninfo
・Instagram:https://www.instagram.com/beyondjapan_24365

・クラウド予約システム EDISONE(エジソン

元記事を表示

[Laravel] シングルアクションコントローラで責務を分割する

# 導入

Laravelでルートに関する処理を記述する場合、以下のように操作する対象のオブジェクト毎にコントローラクラスを生成し、ルート毎にメソッドを作るのが一般的かと思います。

“`php
namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\View\View;

class UserController extends Controller
{
/**
* Show the profile for a given user.
*/
public function show(string $id): View
{
return view(‘user.profile’, [
‘user’ => User::findOrFail($id)
]);
}
}
“`

ルート定義は以下のようになります。

“`php
use App\Http\Controllers\UserControl

元記事を表示

PHPでよく起こるエラーと対処方法

プログラムを書いていると必ず出会うのがエラーです。
エラーはちゃんとログを読めば、何が原因でエラーが起きているか分かるので怖いものではないです。
(ただ、初心者の頃はエラーが出ると、分からなくて困っていた記憶があります)

このあたり慣れると感覚でできますが、慣れるまでは難しいと思ってしまうところです。
**なので、日本語ベースでだいたい「どういうエラーが起きるのか?」を知っておくと、解決するのが早くなります。**

前提として、どんなエラーが起きているか分かっているのと、分からないのとでは、全く違いますからね。
(これはプログラミング以外のことでも同様です)

## PHPでよく起こるエラーと対処方法

### 文法的に書き方が間違っている

初心者にあるあるなエラーですが、ネストが深くて分からなくなってしまうケースもあります。
**基本的に、始めたら閉じるのがプログラミング言語の書き方では重要です。**
({}とか()とか””とか;とか)

あとは、変数の宣言やコードの途中に全角で文字が入ってしまっているケースですかね。
スペースが全角になっていると見つけるのが大変なので、VSCo

元記事を表示

数値、文字及び文字列リテラルなしでHello Worldを出力する

出題当時に盛り上がっていたのを思い出しました
改めて回答してみました

# 問題文

https://github.com/cielavenir/codeiq_problems/blob/master/q431/editorial.md

> 標準出力に Hello World と出力するプログラムを作成して下さい。
>
> ただし、数値、文字及び文字列リテラルを解答に含めることはできません。 Perlのqqやqw、Rubyの%Q、%q、%wなども避けたほうが評価が高くなります。 言語仕様をフル活用して下さい!

ご自身で考えてみる方向けに、解答例の記述までにいくらか行を空けておきます

よろしいですか

# 解答例1

“`php

元記事を表示

【PHP・Laravel・Rails】これまで学んだフレームワーク・言語でのsessionの使い方振り返ってみた

# 概要
この記事では私がこれまで学習してきたPHP、Laravel、Ruby on Railsでのsessionの使い方について紹介していきたいと思います。
# 対象とする読者
– 様々なフレームワークや言語でのsessionの使い方の違いについて知りたい方
– PHP、Laravel、Ruby on Railsでのセッションの基本から詳細な使い方を学びたい方
– 初学者の方
# PHP
以下がPHPでのsessionを使う際のサンプルコードです。
“`php
session_start();//sessionのスタート
if (!isset($_SESSION[‘count’])) {
$_SESSION[‘count’] = 0;
} else {
$_SESSION[‘count’]++;
}
“`
`session_start()`関数でセッションのスタートをします。
セッションを開始すると、PHP はスーパーグローバル`$_SESSION`にすべてのセッションデータを格納します。
通常は、PHP がスクリプトの処理を終了するときに、セッションは自動的に終了します

元記事を表示

PHPの時間や日付について基本的な点

## time()
今の時間(サーバーの時間)を返す。
返り値はUNIXタイムスタンプ(1970年1月1日からの秒数)。

引数は設定できない。
また、現在の時間しか取得できない。

## date()
引数なしはエラーになる。
第一引数にフォーマット(表示形式)を指定する。
“`demo.php
date(‘Y-m-d H:i:s’); // 2015-07-12 17:41:00
“`
第二引数にUNIXタイムスタンプの変数を指定すれば、「指定した時刻の日時を取得」することができる。
“`demo.php
$foo = strtotime(‘2015-07-12 17:41:00’);
date(‘Y-m-d H:i:s’ , $foo);
“`
ここで使われている’strtotime()’は、引数に日時を指定すると、UNIXタイムスタンプの値を取得できる。
“`demo.php
strtotime(‘+30 day’ , $foo); // $fooの30日後の値を取得
“`
ただしstrtotime()の挙動はつかみづらい。
+1 month などの「1ヶ月」の概念

元記事を表示

PHPUnit 9のデータプロバイダメソッドに引数の指定ができるぞ!(でも、PHPUnit 10では非推奨、PHPUnit 11以降は使えない)

## はじめに

PHPUnit9までのデータプロバイダメソッドに引数の指定ができる事にたまたま気づいたので調査結果を残しておきます。

## 環境

– PHP 8.2.12

## さっそく確認してみる

つぎの検証用コードで確認してみます。

“`php:PHPUnit9DataProviderMethodTest.php

元記事を表示

【PHP】億単位の数値を綺麗にする。一部漢字表示を使う

# コード
“`PHP
0 ? number_format($oku). ‘億’ : ”),
($man > 0 ? number_format($man). ‘万’ : ”),
($sen > 0 ? number_format($sen) : ”)
])) ?: ‘0’;
echo $result.PHP_EOL;
}

“`

# 結果
“`javascript
1億2,000万1
2,00

元記事を表示

SPIRAL v1の「マイエリア」エラーページ

スパイラル株式会社(旧:株式会社パイプドビッツ)のローコード開発プラットフォーム「SPIRAL® ver.1」を利用した開発のハック(工夫)。
https://www.pi-pe.co.jp/spiral-series/spiral-suite/

SPIRALでは一部ページはPHP 7.4で実装が可能。
「マイエリア」Webオブジェクトでは①ログイン画面、②エラー画面、③カスタムページなどが設定できるのだが、
②のエラー画面が曲者で、 **エラー画面はPHPが利用できない静的ページ** で、一部Javaサーブレット差替えキーワードによって置換されるのみとなる。
且つ、「ログインエラー」「ログインロック(連続PW誤り)」「セッションエラー」など複数のエラー画面に分かれていて「同じ文言を繰り返し記述」する必要がありヒューマンエラーを誘発する作りとなっている。
実装したからには確認・テストが必要で、複数の設定は修正漏れ等も発生しやすいため、極力まとめてしまうのが一番でシンプル化を推進したい。

よって、対策として、以下のように「ログインページのURLにPOSTリダイレクト」して、ログイン画

元記事を表示

macOS で定期的なメンテとして行っている brew upgrade 後に エラー dyld[51818]: Library not loaded: /usr/local/opt/libavif/lib/libavif.15.dylib 発生。

試行錯誤した時の対処方法をメモリます。

`brew upgrade` した後に、自分の mac の PHP が動かなくなって焦りました。

“`
$ php -v
dyld[51818]: Library not loaded: /usr/local/opt/libavif/lib/libavif.15.dylib
Referenced from: /usr/local/Cellar/gd/2.3.3_5/lib/libgd.3.dylib
Reason: tried: ‘/usr/local/opt/libavif/lib/libavif.15.dylib’ (no such file), ‘/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/libavif/lib/libavif.15.dylib’ (no such file), ‘/usr/local/opt/libavif/lib/libavif.15.dylib’ (no such file),

元記事を表示

Laravel コレクション型について…..

ドキュメント Laravel 9.x で コレクションを確認すると

> Illuminate\Support\Collectionクラスは
>配列データを操作するための、書きやすく使いやすいラッパーです。

なんのこっちゃ。。。。
理解力が足りない私がコレクションについて深掘りします。

ラッパーとは…..

まず、ラッパーって 歌う方のラッパー?となりましたが

“`rb
歌う方のラッパー = Rapper
ここで出てくるラッパー = Wrapper
“`

全然、別物でした。:raised_hands_tone1:

Wrapper = 包装紙、カバー、覆うもの、包むもの、などの意味を持つ英単語。
     ソフトウェアやプログラム部品などが提供するクラスや関数、データ型などを、本来とは異なる環境や方法で利用できるようにしたものをラッパーという。

勝手な解釈

:::note
Wrapper=元々ある複雑で持ちにくい荷物をWrap

元記事を表示

LaravelユーザーがCodeIgniterを勉強してみる

## はじめに
最近、新しいプロジェクトでCodeIgniterを使うことになりました。これまでLaravelを使ってきたので、CodeIgniterは初めての経験です。
そこで、今回は初心者ではありますがLaravelユーザーがCodeIgniterに挑戦する際の基本的なポイントを調べたので共有したいと思います。

## 1. フレームワークの違い
まず、LaravelとCodeIgniterの大きな違いです。Laravelは豊富な機能とエコシステムを提供し、モダンなウェブ開発に適しています。一方、CodeIgniterはシンプルで軽量なフレームワークで、小規模から中規模のプロジェクトに向いています。Laravelに慣れている人にとって、CodeIgniterはよりシンプルで制約の少ない選択肢かもしれません。

## 2. ドキュメンテーションとコミュニティ
Laravelの強みの1つは優れたドキュメンテーションと活発なコミュニティです。豊富な情報源やパッケージがあり、問題にぶつかったときに頼りになります。CodeIgniterのコミュニティも存在しますが、規模は小さめです。新しい

元記事を表示

PHP CodeSnifferを利用してコーディング規約チェックを行う

コーディング規約を遵守したコードを書くために、静的解析ツールである PHP CodeSniffer を導入します。本記事では、自分が作成したプログラムに対してPSR-2コーディング規約に準拠しているかチェックを行い、実際に指摘された内容を一覧化します。また、エラーの解消方法についても示します。
今後のプログラミング学習において、今回の指摘内容を留意し、コーディング規約を遵守した可読性の高いコードを書くようにしていきたいと思います。

## 指摘事項一覧
PSR-2コーディング規約に違反していると指摘を受けた項目を一覧にし、それぞれのエラーの解消方法を示します。

“`php
Each class must be in a file by itself
“`
このエラーメッセージは、PHPのクラス宣言が一つのファイルに含まれているべきであるという規則に違反している場合に表示されます。PHPにおいては、1つのファイルに1つのクラスを含めることが推奨されています。
このエラーを解消するには、複数のクラスを含んだファイルをクラスごとに分割し、個別のファイルに保存します。これにより、コードが

元記事を表示

【PHP】例外処理

例外処理について学習した記録です。

## 例外処理とは
プログラムの実行時に発生した問題に対応できるようにしておくこと。

例)・0で割り算をする
  ・指定したファイルが存在しない

上記の様な問題が発生したときに、「処理を終了して、警告文を表示する」というような対応が**例外処理**という。

## 例外処理の必要性
### 例外処理がなければ…
問題が発生しても気付くことができず、大きな不具合につながってしまう。
**→異常があったことを伝えて、対応する仕組みが必要になる。**

## 例外処理の流れ

### 1. 例外を発生させる(例外を投げる)
**throw** を使用することで、例外を発生させることができる。
“`php:throw
throw new Exception(‘エラーメッセージ’);
“`
throw するだけでは、例外処理をすることはできない。
例外処理をする為には、throw で投げられた例外を受け取り、処理するプログラムを作成する必要がある。
### 2. 例外を捕捉する
throw で投げられた例外を捕捉し、処理するには、
**try~c

元記事を表示

はじめてコードレビューをする時に気をつけること

## はじめに
私がリーダーを務めるチームでは、未経験で入社した社員も3ヶ月もすればコードレビューを任せることになります。
今までは「過去のマジリク見てやり方学んでください」というスタイルでしたが、新人も増えてきてこのままではレビューの質に差が出てしまって良くないですね。
そこで今回、私がどんなことを考えてレビューしているかをまとめました。

## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者
– 上司から「そろそろコードレビューやってみようか」と言われたエンジニア

:::note warn
この記事では、一部、弊チームだけのルールもご紹介しております。
そのため、全てのルールがベストプラクティスとは限りません。
是非、ご自身の環境に合った形でカスタマイズしてご活用ください。
:::

## 結論
下記の順でコードレビューすれば手戻りが少なくなります。

:::note
1. コードの書き方を見る
2. コードの中身を見る
3. ローカルで動作確認する
4. 検証環境サーバで動作確認する
:::

それでは、それぞれの工程に

元記事を表示

新規サービス?それってどうやって作るの?Publicにして開発するので元気玉をください

# 新規サービス?それってどうやって作るの?
新しいエンジニアの転職探しのためのプラットフォームを立ち上げます。
開発はGitHub上で進めますが、全てを公開モード(Public)でオープンに進行する予定です。
開発はGitHub上で進めますが、反響があれば全てを公開モード(Public)でオープンに進行する予定です。

いいねの数が多いとPublicで開発するモチベーションになります笑

## なぜオープンにするのか?
その理由は「**初級・中級者が0から1を生み出す方法を学べるようにしたい**」からです。
初級・中級者の中にはWebサービス作成の初期段階が難しく感じる人が多いようです。
以下の2つの課題を感じています:
1. プログラミングを学びたい人が少なく、学び始めても適切な環境が不足している。
2. プログラミングの基本を理解していても、実際のサービスを作成する際に行動に移せない。

私は、多くの人が自身のサービスを立ち上げることができれば、

元記事を表示

OTHERカテゴリの最新記事