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

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

【PHP】NULL 許容型の宣言方法

## 直面した問題
PHP7以降では関数・メソッドの引数に型を指定することができるようになりましたが、型を指定したところ、“null“が通らなくなりエラーが出てしまったので、その解決方法を備忘録として残したいと思います。

## 解決方法
この問題を解決するためには、引数に null 値を受け入れるために “NULL 許容型(Nullable Type)“ を使用します。NULL 許容型を使用することで、通常の型と null を受け入れる型を指定することができます。

具体的には、引数に NULL 許容型を指定するには、引数の型名に “?“ を付けます。以下は、具体的なコード例です。

“`php
function exampleFunction(?string $text) {
// $text は string 型または null を受け入れる
// ここで引数の処理を行う
}
“`
このようにすることで、引数に null 値を渡すことができ、エラーを回避することができます。

元記事を表示

craft cmsで自作プラグインを作成できるか試す

# 概要
WordPress以外に良いcms無いかなと思って探す事がたまにあります。

craftcmsは有償のcmsな分?ドキュメントがしっかり書かれており、プラグイン機能もあるのでcmsの良いところを取り込みながら、モダンな開発ができるのでは?と思って触ってみました。

※プラグイン機能もcomposerで管理している

## craft cmsセットアップ

ddevからインストールする事を推奨しているようですが、直接zipからのダウンロードもできるようなので、今回はzipからセットアップします。

https://craftcms.com/docs/4.x/installation.html

解凍したzipを環境にアップしたらコマンドを打ちます。
対話形式で色々聞いてくるので、設定します。
終了するとインストール完了です。
“`php
php craft setup
“`

## プラグインの作成
プラグインの雛形作成コマンドが無いか調べたところ外部ライブラリとして提供しているようです。

https://craftcms.com/blog/craft-generat

元記事を表示

MW WP formプラグインが誤作動する

### ● orijinal.jsに入れていた過去のformに関するjsが原因だった。
### ● name=””の””の中にnameという値を入れていた(Wordpressのシステム側で既に使用済みのため、お名前などはyour_name等に名前を変えること。他にも使用できないnameの値があるので注意が必要)

### ● php内に直接ショートコード呼び出しを書かず、固定ページにてショートコードをブロックエディターで入れる。
phpの方には、 をいれて呼び出し。

元記事を表示

PhpStormでnoop.phpを除外する【WorldPress】

`noop.php`があると関数定義が重複するので、除外しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3127414/f1885ded-4866-e07d-7c2f-becbb8511e45.png)

https://wordpress.stackexchange.com/a/367659

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3127414/576e9209-314e-566d-1490-b6c5366d1b81.png)

元記事を表示

【PHP】phpの入力と出力

# はじめに
参加するインターン先でphpを使用するのでUdemyや参考書を使いphpの基礎を学んだのでそれを記録します
# phpで書いたコードの表示
“`php:ウェブページへのPHPの埋込み

“`
* ウェブページに表示したいphpで作成した文字列などを``タグで囲みます
* 他にも「SGML形式」や「ASP形式」などがありますが基本は「``」タグを使います
* `?>`は省略可能です。
省略することによって`余分な空白や改行`が出力されるのを防ぐためです。
※ フレームワークやテンプレートエンジンを使用しない、純粋なphpだけのコードの時は省略するのが一般的です。
# 埋め込んだphpの出力
“`php:echoを使って出力

“`
* phpで作成したコードを出力させるには`echo`を表示させたいコードの前に書きます
* `;`(セミコロン)は省略可能です。
`?>`が出現した時点で自動的に

元記事を表示

今更ながら PHP の Enum 型を使ってみた

# まえがき

PHP8.1 が出たときは [BenSampo/laravel-enum](https://github.com/BenSampo/laravel-enum) パッケージを利用していて、それで特に困っていなかったため Enum 型については詳しく調べていませんでした

多分僕と同じようにそのままズルズルと時間が過ぎてしまい、未だに Enum 型を使ったことない方は結構いらっしゃると思うので、そういう方のために使ってみたメモを残します

# Enum

Enumerations (列挙型) とは、クラスのようなもので、特定かつ同一の型のスカラー値のみを持つことができる型を定義します

## 設定可能なスカラー値

– int
– string

## 利用可能なマジックメソッド

– __call()
– __callStatic()
– __invoke()

## サンプルコード

int 型の公開フラグ
**(※Enum 型はインスタンスメソッド、静的メソッドどちらも定義可能です)**

“`php

元記事を表示

laravelのwebpushで小石に躓いた話

## 状況

laravel-notification-channels/webpushを使用した際に、firefoxでは正常に動くが、chromeで通知許可のポップアップが出ない。
コンソールには以下のエラーが
“`
DOMException: Registration failed – missing applicationServerKey, and manifest empty or missing
“`

## 解決策
VAPIDの作成を忘れていた。
ずっと実行したと思いこんでいて、Firefoxで動いてたのもあり。Chromeの設定が悪いと疑っていたので盲点だった。

“`
php artisan webpush:vapid
“`

configをキャッシュしてる人は以下も忘れずに

“`
php artisan config:cache
“`

元記事を表示

[Laravel] whereIntegerInRaw()とPDOと65535

# 概要

みなさんは下記のエラーに悩まされたことはありませんか?

“`bash
SQLSTATE[HY000]: General error: 1390 Prepared statement contains too many placeholders
“`

この記事では、該当のエラーを回避しつつ、より高速に`WHERE IN`句を使用する方法を記載します。

## 該当のPDOエラーについて

下記のテストケースの通り、Eloquentを使用して、エラーを再現してみました。
Eloquentの水面下で動くPDOにおいては、65535より大きい数のプレースホルダーを使用すると、`PDOException`が発生します。

“`php

元記事を表示

docker-compose up -d? build?

Dockerを使って環境構築している時に、
`docker-compose up -d` コマンド
`docker-compose build`  コマンド
どちらを実行するか分からないことが多かったので、
調べたことをここにアウトプットしておきます。

# 前提
Dockerfile内のimageを参考にし、docker-compose.ymlで構築します。

# 各種ファイルの変更時の反映について

docker-compose.yml の内容を変更した場合
イメージ:再構築の必要なし:
コンテナ:再構築の必要あり:`docker-compose up -d`

Dockerfile の内容を変更した場合
イメージ:再構築の必要あり:`docker-compose build`
コンテナ:再構築の必要あり:`docker-compose up -d`

ミドルウェアなどの設定の内容を変更した場合
イメージ:再構築の必要あり:`docker-compose build`
コンテナ:再構築の必要あり:`docker-compose up -d`

# docker-compose u

元記事を表示

Itaratorパターンとは

# Iteratorパターン とは ??
「**Iterate**」は「◯◯を繰り返す」という意味で、
プログラミングにおいては「for」や「while」などを用いた「**反復処理をする**」という意味で使われる。

「**Iterator パターン**」は、集約オブジェクト(コレクションオブジェクト)の中の要素を列挙する手段を提供して、具体的な列挙方法を集約オブジェクトから隠蔽することで、列挙方法を抽象化します。

とのこと:thinking:

# 集約オブジェクトとは ??
何らかの「情報の集まり」を格納したオブジェクトのこと。

“`php
// 「書籍」集約オブジェクト
$book_list = [
‘星の王子さま’,
‘銀河鉄道の夜’,
‘吾輩は猫である’,
‘西の魔女が死んだ’,
‘コーヒーが冷めないうちに’
];
“`

# 集約オブジェクトをIterateする !!
foreachで回すだけ。

“`php
foreach ($book_list as $book) {
echo $book;
}
“`

 
後日集約

元記事を表示

【WordPress】ショートコードを使ってみる

## 手順
1. functions.php を保存
1. ショートコード化したい処理を functions.php に関数形式で記述
1. add_shortcode関数を使って 2.の関数をショートコードとして登録
1. 記事にショートコードを追加

## 1. functions.php を保存
functions.phpはWordPressのテーマで使われる関数が記述されているPHPファイルです。
編集中の記述ミスによりWordPressの動作が停止する可能性があるため、バックアップを取っておく必要があります。
### 方法
利用しているレンタルサーバのFTP管理画面でダウンロードして保存しておく。
今回はロリポップ!を使っているので以下を方法でダウンロードする。
https://lolipop.jp/manual/user/ftp2-03/

## 2. ショートコード化したい処理を関数で記述
WordPress管理画面でfunctions.phpを編集して、ショートコード化したい処理を実行する関数を作成します。

### 方法
WordPress管理画面の ツール > テ

元記事を表示

PHP の private property + getter と public readonly property どちらを使うべきか?

# 1行結論

僕では絶対こちらがいい、という決め手を見つけられませんでした。プロジェクト次第。

# サンプルコードを書いてみる

サンプルコードを書いてメリット・デメリットを考える。

– 姓、名、フルネームを持つユーザークラスを作成したい
– User, FirstName, LastName, FullName クラスをそれぞれ作成する
– PHP8.2
– Qiita 上でササッと書いたのでコードに間違いあるかも

# private property + getter の場合

“`php
namespace Kazumacchi\Sample;

class FirstName
{
/**
* @param string $firstName
*/
public function __construct(
private string $firstName,
) {
}

/**
* @return string
*/
public function ge

元記事を表示

【PHP】考察中

# コード
“`PHP

元記事を表示

<手順整理>Flyデプロイ

概要

【PHP/Laravel】プログラミング初学者によるアプリケーション開発
https://qiita.com/AlpacaFace/items/b8e05a3da599815d8e31

上記トークアプリ開発のデプロイを説明します。

前提条件

– GUI画面で以下を実施済みであること。
– Fly.ioへユーザ登録
– Fly.ioへログイン

手順整理 ターミナル操作

■対象ブランチの最新化

$ pwd
→ ~(任意の場所)~/joint_develop_docker/src/laravelapp

$ git branch
→ * (対象のブランチ名)

$ git pull origin (対象のブランチ名)

$ docker exec -it laravel_app bash

# ls
→ laravelapp

# cd laravelapp ; pwd
→ /var/www/html/laravelapp

# php artisan migrate:fr

元記事を表示

<設計>ユーザ退会機能

概要

【PHP/Laravel】プログラミング初学者によるアプリケーション開発
https://qiita.com/AlpacaFace/items/b8e05a3da599815d8e31

上記トークアプリ開発の設計を説明します。

対象機能

– ユーザ退会機能
– 追加機能:フラッシュメッセージ機能の実装(ユーザ情報更新時、ユーザ退会時)

基本設計

*** 【定義】 ***
– ユーザ退会機能とは、登録済みのログインユーザ自身がトークアプリから退会する機能。

*** 【仕様】 ***
– 退会ボタンは、ユーザ情報を編集する画面から表示させる。
– 退会処理は、退会ボタンからのみ可能。
– 退会ボタンにはルーティングの住所が存在しない。

*** 【画面遷移】 ***
– 退会ボタンを一度押した時、「本当に退会しますか?」のメッセージが表示される。
– メッセージの下には「退会する」 「閉じる」 のボタンが表示される。
– 「閉じる」 を押すと、ユーザ情報の編集画面に戻る。
– 「退会する」を押すと、トップページに画面遷移する。退会後のトップページには自分の名前と、

元記事を表示

<設計>投稿削除機能

概要

【PHP/Laravel】プログラミング初学者によるアプリケーション開発
https://qiita.com/AlpacaFace/items/b8e05a3da599815d8e31

上記トークアプリ開発の設計を説明します。

対象機能

– 投稿削除機能

基本設計

*** 【定義】 ***
– 投稿削除とは、ログインしたユーザーが、自ら投稿したものを削除できる機能。

*** 【仕様】 ***
– すでに投稿済みの内容については、削除ボタンからのみ削除可能とし、削除ボタンが表示されていなければ削除を行えないものとする。

– 削除ボタンは、
1. ログイン後のトップページの投稿表示と、
2. ユーザ詳細画面で表示される。
– 削除ボタンにはルーティングの住所が存在しない。

*** 【操作権限】 ***

<まとめ>投稿削除ボタン操作
![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292958/2c8e495a-d79e-cc59-d1b1-9f2252316368.

元記事を表示

クラスの継承

## 継承とは
継承はクラスを拡張するための手段です。
`class 子クラス extends 親クラス`
と記述することで、子クラス内で親クラスのメソッドやプロパティを利用できるようになります。
“`php
$name = $name;
}

public function getName()
{
return this->$name;
}

public function setLanguage($language)
{
return $this->$language = $language;
}

public function getLanguage()
{
this->$language

元記事を表示

<設計>ユーザ編集画面・更新

概要

【PHP/Laravel】プログラミング初学者によるアプリケーション開発
https://qiita.com/AlpacaFace/items/b8e05a3da599815d8e31

上記トークアプリ開発の設計を説明します。

対象機能

– ユーザ編集画面・更新

基本設計

*** 【定義】 ***

・ユーザ編集画面・更新とは、
ログインした状態で、自分の名前をクリックすると、ユーザ情報の編集を行う画面が表示される。

*** 【画面仕様】 ***

・ユーザ情報の編集画面では、以下の情報が表示される。

ユーザ情報を編集する
[エラーを表示する場所]

[ユーザ名]

[メールアドレス]

[パスワード]

[パスワードの確認]

退会するボタン 更新するボタン

更新するボタンは作る。
退会するボタンはまだいらない。

今回は、ルーターとコントローラーで対応する。

*** 【操作権限】 ***

<まとめ>ユーザ編集画面と操作者のパーミッション

凡例 「 ○ 」 …… 操作可能 / 「 – 」 …… 操作不可
![図1.png

元記事を表示

CakePHPにIDE Helperを導入しIDE補完で開発効率を上げる⚡️【CI連携】

こんにちは、みやがわです。

CakePHPで開発を行う上で必ず導入したいライブラリの一つである IDE Helper をご紹介します。

## 環境

– CakePHP: 4.4.15 ( 3版もあります )
– PHP: 8.1.20

## IDE Helperとは

IDE Helperとはその名の通りIDEやエディタを補助するためのプラグインで、主に補完の面でサポートします。

PHPの言語仕様に対応しているIDEでは最初からある程度の補完はされますが、扱うフレームワークがマジックメソッドを持っていたり特殊なインスタンス参照を行っている場合には適切な補完を表示することが出来ません。

CakePHPの場合、そういった補完を適切に表示するためにはクラスのPHPDocに対して `@property`タグを追加する必要があります。

例) `$this→loadComponent()` で読み込んだクラスの補完を効かせるために `@property` タグを追加している
![Screenshot 2023-08-11 at 16.26.27.png](https:/

元記事を表示

LaravelでcomposerとPHPバージョン違いのエラー

環境
・MasOS
・Laravel8
・docker

localhostでアクセスした際に、
~~~
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”. You are running 7.4.33. in /var/www/html/app/vendor/composer/platform_check.php on line 24
~~~

このエラーに遭遇しました。

エラー内容としては、
composerに必要なPHPバージョンは8.1.0だが、あなたのバージョンは7.4.33ですよ
と言われている。

解決方法
いいや私はPHP 7.4.33 を使うからそっちが折れろ!
という気持ちでcomposer側にバージョンを指定してあげれば良い。

~~~
composer config platform.php 7.4.33
~~~
このコマンドを実行するとバージョンを変更することができる。

バー

元記事を表示

OTHERカテゴリの最新記事