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

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

【PHP】str_repeat関数でfor文をより簡潔に書く

# 初めに
最近codewarsというプログラミング練習用のサイトに登録した。私はこれまでのPJでPHPとJSはやっているので、問題はPHPで解いている。その中でこうすればさらに簡潔にプログラムを書けるなという気づきがあったので、備忘録として書く。

## codewars
全て英語だが、他の人が書いた解答を見ることができる。また機会があればまとめる。
https://www.codewars.com/

## 問題の内容
かなりざっくりと書くと、以下のような問題があった。

>数値nの回数だけ文字列Iを繰り返して出力する

これを見た瞬間に、繰り返しだと判断した私は真っ先にこのような答えを書いた。

“`ruby:PHP
for($i = 0; $i < n; $i++){ echo "I"; } ``` for文を使った基本的な繰り返し文である。例えばn=2の場合,"II"と出力される。 ではこれを関数を使って書きなおしてみよう。 ## str_repeatを使う >str_repeat(string $string, int $times): string
str

元記事を表示

PHPが最悪のプログラミング言語ではないのに、なぜ多くの人が批判するのか?

> それは現在のインターネットの77%を占めているからです。

インターネット上の猫の動画さえも上回る頻繁なPHPへの冗談にもかかわらず、PHPは引き続き主要なサーバーサイドスクリプト言語としての地位を確立しています。実際、驚くべきことに、統計によると、認識されたすべてのウェブサイトの77.4%がPHPで動作しており、その広範な採用を証明しています。これは、ウェブ開発者にとって効率的なPHP開発環境を構築することの重要性を強調しています。

PHPの広範な人気の秘密はそのアクセシビリティにあります。この言語は、「Hello, World!」と宣言するよりも速く、ウェブページやデータベースとの迅速な対話を可能にします。さらに、WordPressのウェブへの影響は否定できません。ウェブサイトの40%以上がこのPHPベースのプラットフォームを利用しています。macOSで作業している開発者にとって、PHPをシームレスに統合する[macOS開発スタック](https://www.servbay.com/)を構成することは、生産性とパフォーマンスを大幅に向上させることができます。

しかし、PHP

元記事を表示

PHPのfilter_var関数で検証を行う

## はじめに
最近ChatGPTでPHPコードを生成した際Filterの存在を知った。
スクラッチ開発でメールアドレスなどの検証を行うのに正規表現を利用していたが標準機能が存在するなら利用しようと思いまとめてみた。
今回はfilter_var関数を使った検証フィルタをいくつかまとめた。他にもさまざまなFilterの機能が存在する。詳しくはPHPマニュアルを確認して欲しい。

※対応バージョンはPHP 5 >= 5.2.0, PHP 7, PHP 8
※一部機能は対応していないバージョンがあるのでマニュアルを確認すること

## Boolean
– “1”、”true”、”on” および “yes”の時trueを返す

| フィルタの型 | |
|:————————|:———————|
| FILTER_VALIDATE_BOOLEAN | FILTER_VALIDATE_BOOL |

### 検証例
– POST送信された値が真(1, true,

元記事を表示

PHPコード保存時にuse文を自動整理したい

# やりたいこと

VS CodeでPHP保存時にuse文に対して以下を行いたい

– アルファベット順にソート
– 不要なuse文の削除

# 探した拡張機能

## 候補1

https://marketplace.visualstudio.com/items?itemName=DEVSENSE.phptools-vscode

この開発元であるDEVSENSEというところの以下の紹介記事がそのものズバリ。

https://blog.devsense.com/2023/sort-uses-and-remove-unused-uses-on-php-file-save

## 候補2

https://marketplace.visualstudio.com/items?itemName=tarik02.php-imports#review-details

拡張機能のREADMEの設定項目を読むとできそうな感じがある。

# やってみる

候補2の`php-imports`を入れてみる。

候補1の`PHP`を使わなかったのは、use文の整理以外にも様々なことを行うオールインワン

元記事を表示

マジックメソッド②

## はじめに

マジックメソッドについて整理する。2回目。

### __toStringメソッド

print命令などでオブジェクトの文字列表現を要求された際

#### 参考コード

“`php:Person.php
class Person
{
public $firstName;
public $lastName;

// 中略

public function __toString() : string
{
return $this->lastName.$this->firstName;
}
}
“`

“`php:toString.php
require_once ‘Person.php’;

$p = new Person(‘太郎’, ‘山田’);
print $p; // 山田太郎
“`

### __invokeメソッド

オブジェクトが関数の形式で呼び出された際。

#### 参考コード

“`FliendList.php
class FliendList implements Iterat

元記事を表示

【PHP8.4】絵文字👨‍👩‍👦‍👦を正しく分割できるようになる

`👨‍👩‍👦‍👦`は25バイトありますが、[これで1文字](https://qiita.com/QUANON/items/2539feed89cee2290664)です。

さて、それでは文字列『絵文字👨‍👩‍👦‍👦を分割』を1文字ずつに分けてみましょう。
現在のPHP標準関数では、これを行うことができません。

[mb_str_split](https://www.php.net/manual/ja/function.mb-str-split.php)すると`[‘絵’, ‘文’, ‘字’, ‘👨’, ‘‍’, ‘👩’, ‘‍’, ‘👦’, ‘‍’, ‘👦’, ‘を’, ‘分’, ‘割’]`になってしまいます。

間の空白なに?

これは[書記素クラスタ](https://qiita.com/_sobataro/items/47989ee4b573e0c2adfc#%E6%9B%B8%E8%A8%98%E7%B4%A0%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF-grapheme-cluster)というもので、正直さっぱり理解できないんだけど、なんか[複数の

元記事を表示

コンテナ上でexecコマンドを実行させる際に陥った罠

最近DockerをREST APIで操作していて色々躓いています。
なんとかChat-GPTの力を借りてやっていっています。

今回は、作業しているコンテナから別のコンテナに対して任意のファイルを実行させようとしたときに詰まったことについて紹介していきたいと思います。

何に詰まったかというと、

自分のコンテナ→相手のコンテナのファイル
の実行でPHPのexec関数を用いて
“`php
exec(‘docker exec コンテナID コマンド’);
“`
としていました。
が、まさかのPermission deniedされてしまいます。対象のコンテナ内のファイルの権限が777ではないため、権限不足になってしまいます。
今回は自分がやった対処法について話したいと思います。

# 素直にDockerのREST APIのexec用のAPIを叩きましょう
Dockerにはコンテナでコマンドを実行させるためのAPIが備わっています。
素直にそれを使いましょう。

使い方は
“`php
//host.docker.internalはホストOS上にコンテナを立てたいときに用います。場合によ

元記事を表示

Laravel + nextjsのdocker環境構築・プロジェクト立ち上げ

## 1.導入環境
– M1 pro macbookpro(os:sonoma:14.4.1(23E224))
– docker desktop

## 2.ディレクトリ構成
“`
├── README.md
├── backend
│   └── Dockerfile
├── compose.yaml
├── db
│   └── my.cnf
├── frontend
│   ├── Dockerfile
│   ├── laravel-next
│   └── package-lock.json
└── mysql
└── my.cnf
“`

## 3.各ディレクトリのDockerfileとCompose.yaml
“`Dockerfile:frontend/Dockerfile
#node.jsを採用
FROM node:20.12.2

#作業ディレクトリの設定
WORKDIR /app
“`
“`Dockerfile:backend/Dockerfile
#php8.3を使用するためのDockerfile
FROM php:8.3-apac

元記事を表示

PHPカンファレンス香川2024に行ってきた話

# 初めに
Akira_0809です。
今回は初めてカンファレンスに参加したので、その話をしたいと思います。
ちなみに、私はPHPを学校の授業で少し触った程度で基本文法も知らない状態で参加しました。
![IMG_1220.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3241738/f8a4ce80-26f0-b1fa-0c27-d70526941d49.jpeg)

# 聞いた講演
### カンファレンスからはじめよ by びきニキ
https://fortee.jp/phpconkagawa-2024/proposal/a623e984-0c15-4c5c-9fb5-84049ff09b96

最初の講演はハックツハッカソンなどで少し接点のあったびきニキさんのを聞きました。
カンファレンスに参加するだけでなくその後の行動に繋げることを発信していました。
この記事を書くきっかけです。
また、他のカンファレンスに参加したいと感じました。

### 泥まみれの技術革新: あなたの[ PHPバージョンアッ

元記事を表示

webアプリ開発 パスワードリマインダー編

# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回は記事の詳細とコメント機能についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## パスワードリマインダー
### 実装事例
パスワードリマインダーはログイン時にパスワードを忘れてしまったユーザーのために作りたいなと思って作りました。

「ログイン画面でパスワードを忘れてしまった方へ」を押してもらうとパスワード再設定用のメール送信画面へ移動します。

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

元記事を表示

LaravelでVSCodeがよしなにメソッドを読み込んでくれない

VSCodeも万能じゃない。

## 背景
### なぜか読み込んでくれないからエラーになることがある
ある日、Laravelで外部サービスログイン機能を実装するために、Socialiteをインストールしたら事件は起こった。
**書き方は正しいのにVSCodeが「そんなメソッドはない」と言ってくる!**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747518/dbd040fc-3c20-05c7-a50f-a2450ea3834b.png)

でも、動かすとちゃんと想定通りに動く。
そりゃちゃんと公式リファレンスの仕様通りに書いてるからね…。

原因を調べると、どうやら読みはあっていたようで、
**動的なインスタンスにはIDEがうまいこと動いてくれていない**らしい。
[~IDEとは~](https://www.redhat.com/ja/topics/middleware/what-is-ide)

解消法を調べていたところ、明示的にクラスパスを指定できる記法なるものがあるらしい

元記事を表示

Webアプリ開発 カテゴリー、タイトル検索編

# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回はカテゴリー、タイトル検索機能についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## カテゴリー検索
### 実装事例
![category.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/b34cbb01-92ba-3815-7a9b-1a60218fe7cf.png)

投稿記事一覧の下にあるカテゴリー検索を押すと投稿記事の一覧とカテゴリー別で記事を確認できる

### ビュー

元記事を表示

【PHP】 paizaスキルチェック 文字の一致 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

### 解答

“`answer.php

“`

### Point
今回は特に特筆すべき点はありませんが、文字列という指定がありましたので、==ではなく===を利用しています。PHPにおいて、==は型の比較がなく、===では型の一致も確認されます。
### 参照
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str
PHPの比較演算子について
https://www.php.net/manual/ja/lan

元記事を表示

【PHP】 paizaスキルチェック 一番小さい値 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

### 解答

“`answer.php

“`

### Point
今回ですが、まず5つの整数を格納する配列を作成して、for文で実際に整数を格納していき、min関数を使って最小値を求めるという手順で書いてみました。

### 参照
https://paiza.jp/works/mondai/

元記事を表示

PHPカンファレンス香川2024に参加してきました #phpconkagawa

# はじめに
[PHPカンファレンス香川2024](https://phpcon.kagawa.jp/2024/)に参加してきました。
[びきニキさんが「みんな、ブログ書こうぜ!!!!」と呼びかけていた](https://x.com/BkNkbot/status/1789273368690376871)ので、久々にQiita記事を書いてみました。

# 聞いた講演とその感想
## PHP コードの実行モデルを理解する
https://fortee.jp/phpconkagawa-2024/proposal/8251b4a5-bb67-4d84-b538-0a018d5cb292

なんとなくPHP-FPMやPHPのCLIを使ってきたので、体系立てて理解する契機になりました。オペコードの中身を初めて見ました。何度も資料を読み込んで深い理解に至りたいです。

## 新米SRE、4つのプロダクトを同時にPHP7.0から8.1へ!!
https://fortee.jp/phpconkagawa-2024/proposal/3746d04f-d0cd-4f02-b603-4132f82c080d

元記事を表示

【PHP】 paizaスキルチェック 足し算 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/addition

### 解答

“`answer.php

“`

### Point
今回の問題では、変数a,変数bが半角スペースで区切られて入力されるという条件があります。fgets関数は一行読み取るという仕様ですので、読み取ったあとそれを分割する必要があります。上記のコードでは、explode関数を使用してスペースで分割しそれぞれの数値を変数に格納しています。

### 参照
https://paiza.jp/works/mondai/d_rank_sk

元記事を表示

【PHP】 paizaスキルチェック 掛け算 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/multiplication

### 解答

“`answer.php

“`

### Point
標準入力についての理解があれば問題ないと思います

### 参照
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/multiplication

元記事を表示

マジックメソッド①

## はじめに

### マジックメソッドとは

あらかじめ特定の役割を与えられたメソッド。
シグネチャ(名前、引数、戻り値の組み合わせ)と呼び出しのタイミングが決められていて、中身(機能)がないため、必要に応じて自分で実装する必要がある。

#### __getメソッド

未定義のプロパティを取得しようとした際

#### __setメソッド

未定義のプロパティを設定しようとした際

##### 参考コード

`to`, `subject`, `message`だけを定義しておいて、それ以外のプロパティは`__get`/`__set`メソッドで処理させている。

“`php:MyMail.php
class MyMail
{
public string $to;
public string $subject;
public string $message;

private array $headers = [];

public function __set(string $name, string $value)
{

元記事を表示

【AtCoder Beginners Selection】初学者がPHPで解いてみた

# はじめに

AtCoder Beginners Selection をPHPで解いてみました。
これまではPythonを主に学習していましたが、エンジニアとして転職が決まり転職先でPHPを使用するため学習しています。
基本的な文法が習得できているかの確認のために行いました。

そもそも実務未経験な上、PHPは入門書を一通り学習した程度のため拙いコードだと思います。
ご指摘があれば、コメント欄で頂けると幸いです。

# 解答
### ABC086A – Product

“`PHP

“`

### ABC081A – Placing Marbles
“`PHP

“`

### ABC081B – Shift only
“`PHP

元記事を表示

Laravel フラッシュメッセージを実装してみる🧑‍💻

# はじめに🐯
※ここに記すことは、個人の試行錯誤体験記です。記載する情報が必ずしも正しいとは限りません。投稿時点での個人の最適解です。また、間違った認識も多くあると思います。その時は、優しく指摘いただけますと幸いです。
# こんな方にオススメです🙆‍♂️
– 駆けだし始めた初学者
– フラッシュメッセージってなんだっけ?
– ChatGPT使ったけどいまいちわかんない
# なぜ、実装したのか🛠
– 現役エンジニアのメンターサービス受講中。そこのカリキュラムである、チーム開発の担当タスクのため
# フラッシュメッセージについて💡
そもそも、フラッシュメッセージを知らなかったのでメンターに質問したがはっきりと認識できなかったので、調べて理解度を高めました。
#### 個人的なサマリー💁‍♂️
– ウェブアプリケーションにおいてユーザーが行った特定のアクションの結果に関する一時的な通知(フォームの送信やデータの更新など)
– 通常、次のページの読み込み時に一度だけ表示され、その後自動的に消えるように設計されている
– UXを向上させるための重要なツール
# 特徴🚥

#### 一時性

元記事を表示

OTHERカテゴリの最新記事