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

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

【PHP】エラーハンドリング ~Exceptionクラス~

## PHPの例外処理
プログラムの異常終了を防ぐために、例外として処理する。
PHPではExceptionクラスを使う。
https://www.php.net/manual/ja/language.exceptions.php

## Exceptionクラスの使い方

例外をスローする。(例外が発生することを例外を投げるという)
“`php

“`
例外が発生する可能性のあるコードをtryで囲み、例外を受け取った後のコードをcatchに記述する。

“`php

“`

変数$flgの値がtrueの時はOKと返し、falseのときに例外として返す。
“`php

元記事を表示

Dockerにて構築されたPHP(Laravel)環境で、MailHogを使ってメール送信処理をテストする

# 概要
ローカル環境でメール送信処理をテストする際。
実際にメール送信されないようにしつつ、挙動をテストするため、MailHogを利用しました。
設定方法などメモします。

# 環境
– PHP8.1系
– Laravel9系
– ローカル環境はDockerにて構築

# 設定方法
## MailHogを導入
`docker-compose.yml`にMailHogの記述を追加します。(ここで立ち上がるコンテナが、ローカル用のSMTPサーバーとなります)
[DockerHubに公開されているイメージ](https://hub.docker.com/r/mailhog/mailhog/)をそのまま利用できます。

“`yml
services:
mailhog:
image: mailhog/mailhog:latest
ports:
– “8025:8025”
– “1025:1025”
“`

`1025`はSMTPポート用、`8025`はHTTPポート用(ブラウザからMailHog管理画面にアクセスする用)として設定しています。

元記事を表示

PHPのクラスについて

PHPのクラスについて学習した事のアウトプットです。

## クラス
クラスとは定数や変数(プロパティ)と関数(メソッド)をまとめたです。
※PHPマニュアルには”クラスの中にはプロパティそしてメソッドを含めることができる”と記載されている

~~~md:SimpleClass.php
var;
}
}
?>
~~~
## 疑似変数 $this

PHPマニュアルには”メソッドがオブジェクトのコンテキストからコールされる場合は、 疑似変数 `$this` が利用可能。 `$this` は、呼び出し元オブジェクトの値”と記載されている。
サンプルコードを作成し考察する。
~~~md:SimpleClass1.php

元記事を表示

なぜ出力時のHTMLエスケープを省略してはならないのか

メリークリスマス! 週末もPHPを楽しんでますか? :santa_tone2:
ところでWebセキュリティはWebアプリケーションを公開する上で**基礎中の基礎**ですよね! :innocent:

メジャーな脆弱性を作り込まないことはWeb開発においては専門技術ではなく、プロとしての基本です。
中でも**XSS** (Cross-Site Scriptingクロスサイトスクリプティング)やインジェクションについての考慮は常に絶対に欠いてはならないものです。

現実にはプログラミングには自動車のような運転免許制度がないため、自動車学校に通わず独学で公道に出ることができてしまいます。つまりは基礎知識がないままにWebプログラマとして就職したり、フリーランスとして案件を請けることも現実には罷り通っています。それは**一時停止標識も赤信号も知らずにタクシー営業しているようなもの**です。

このような事情により、体系的な理解のないWeb開発初心者は *(時には**n**年のキャリアを持つ人でも)* 雰囲気による曖昧な基準でHTMLエスケープをしたりしなかっ

元記事を表示

PHPからJavaScriptにデータを受け渡すときに考えること

PHPからJavaScriptにデータを受け渡す需要は多くあるので、把握しておくべきことをまとめます。
原則としてはPHPの値をJSONに変換することです。

## 仕様について

**JSON**(JavaScript Object Notation)はJavaScriptのオブジェクトとリテラル記法に由来する部分集合サブセットとして定義されました。JSONの仕様は[JSON.orgの説明](https://www.json.org/json-ja.html)と[RFC 8259](https://www.rfc-editor.org/rfc/rfc8259)などで定義されています。ざっくりとした理解はWikipediaなんかを見てもらうといいでしょう。

https://ja.wikipedia.org/wiki/JavaScript_Object_Notation

## データ型

PHPとJSONは基本的には似たようなデータ型を備えていますが、細かい点で違いがあります。

| データの種類 | PHPの型名 | JSONの型名

元記事を表示

【CakePHP】git cloneして開発環境構築

# 0. はじめに
大阪の受託開発エンジニアの、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
CakePHPプロジェクトを`git clone`して、`vendor`や`.env`,`app_local.php`ファイルを作って`bin/cake server`するまでのメモです!

## 0-1. 目次
> [1.環境構築](#1-環境構築)
> [2.初期設定](#2-初期設定)
> [Reference](#reference)

## 0-2. 前提条件
– Gitインストール済み
– GitHub登録済み

## 0-3. 開発環境
|key|value|
|:–:|:–:|
|OS|macOS|
|FW|CakePHP|
|バーション管理|Git/GitHub|
|パッケージ管理|Composer|

# 1. 環境構築
## 1-1. git clone
“`terminal:local
$ mkdir cakephp
$ cd cakephp
$ git clone https:

元記事を表示

BLOCS で エディタ / IDE のサポートを有効にする

最近のエディタや各種 IDE においては大体入力をサポートしてくれる機能があり、少ないタイプ数で、あるいは少々うろ覚えでも書き進めることができます。

ところで BLOCS という新しいテンプレートエンジンをリリースしました。こういう時に困るのが入力のサポートを受けられないことです。そこでいくつかのエディタ / IDE で BLOCS のデータ属性を入力する際にサポートを受けれるようにスニペットやライブテンプレートを用意しました。

ちなみに BLOCS はこちらになります

https://github.com/blocs/blocs

# Sublime Text で Snippets を使う

上記リポジトリの `snippets/SublimeText/*.sublime-snippet` を以下のディレクトリに置く

[Windows]
`~\AppData\Sublime Text\Packages\User\`

[Mac]
`~/Library/Application Support/Sublime Text/Packages/User/`

![sublimetext

元記事を表示

[Laravel] sail 8.1 起動時エラーで立ち上げられなかった話。

sail 8.1 でLaravelプロジェクトを立ち上げたのだが、下記エラーがでた。
“`terminal
=> ERROR [ 4/11] RUN apt-get update && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 && curl 9.3s
——
> [ 4/11] RUN apt-get update && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 && curl -sS ‘https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae526

元記事を表示

【Laravel】git cloneして開発環境構築

# 0. はじめに
大阪の受託開発エンジニアの、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
Laravelプロジェクトを`git clone`して、`vendor`や`.env`ファイルを作って`php artisan serve`するまでのメモです!
(※初期設定は必要に応じて実施してください。)

## 0-1. 目次
> [1.環境構築](#1-環境構築)
> [2.初期設定](#2-初期設定)
> [Reference](#reference)

## 0-2. 前提条件
– Gitインストール済み
– GitHub登録済み

## 0-3. 開発環境
|key|value|
|:–:|:–:|
|OS|macOS|
|FW|Laravel|
|バーション管理|Git/GitHub|
|パッケージ管理|Composer|

# 1. 環境構築
## 1-1. git clone
“`terminal:local
$ mkdir laravel
$ cd laravel
$ git cl

元記事を表示

【Drupal9】Docker × DDEVでDrupalローカル開発環境構築

# 0. はじめに
大阪の受託開発エンジニアの、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
『Drupal 9 Web開発ことはじめ』記載の環境構築がうまくいかなかったのでメモ。

https://nextpublishing.jp/book/12999.html

## 0-1. 全体の流れ
> [1.DDEV](#1-ddev)
> [2.Drupal](#2-drupal)
> [3.appendix](#3-appendix)
> [Reference](#reference)

## 0-2. 前提条件
– `Docker`インストール済み
– `Homebrew`インストール済み

https://www.docker.com/products/docker-desktop/

https://brew.sh/index_ja

## 0-3.開発環境
|key|value|
|:–:|:–:|
|Drupal|9|
|PHP|8.1|
|Docker|20.10.21|
|Home

元記事を表示

【PHP】イミュータブルな実装って何が美味しいの?

## はじめに
保守的性の高いコードの書き方を調べているとイミュータブルなオブジェクトに関する話題を見つけました。

## 調べてみる
### (そもそも)ミュータブルとは
– mutableは、可変という意味
– インスタンス(オブジェクト)の状態を変更できるインスタンス(オブジェクト)
– 想定していない更新が起こる可能性があるためイミュータブルより安全性が低い

### (本題の)イミュータブルとは
– immutableは、不変という意味
– インスタンス(オブジェクト)の状態を変更できないインスタンス(オブジェクト)
– 変数に対して再代入をすることができないため、想定していない更新を防ぐことができる。ミュータブルより安全度が高い

## 書いてみる
“`Sale.php
class Sales {
private $price;

public function __construct(int $price){
$this->price = $price;
}
public function getPrice(): int

元記事を表示

関数の呼び出し(PHP)

関数の呼び出しを使ったサンプルプログラムです

“`HTML






関数テスト



元記事を表示

Laravelで使えるテンプレートエンジン『BLOCS』を使ってみた!

エンジニア歴1年、Laravel使用歴半年程度の私が、HTMLと親和性の高いテンプレートエンジン『BLOCS』を使ってみたので、使用感をご紹介します。

ひよっこエンジニアにはBladeがややこしい!

Laravelを使っている方であれば、標準のテンプレートエンジンであるBladeを使っている方がほとんどかと思います。
経験豊富なエンジニアであれば、Bladeを不便なく使うことができるでしょう。しかし、ついこの間PHPに触れたばかりのひよっこエンジニアにとって、Bladeを使ってテンプレートを作成することは、PHPでプログラムを行うのと大差ない抵抗感を覚えることも多いのではないでしょうか。

例えば、コントローラーから受け取った“`$name“`という値をそのまま表示するだけであれば、Bladeで下記のように書けばよいだけです。
“`html:example.blade.php

Hello, {{$name}}.

“`
ここまでは、初心者でも簡単に理解できます。
しかし、“`$name“`がある時だけ表示したいなど、ifの条件がある時には下記

元記事を表示

PHPでPIDが存在するかチェック【file_exists vs posix_getpgid vs is_dir vs posix_kill】

# TL;DR

`posix_getpgid($pid)`を使うのがオススメ

https://stackoverflow.com/questions/9874331/how-to-check-whether-specified-pid-is-currently-running-without-invoking-ps-from

PHPでPIDがあるか確認する方法はいくつかあるが、最速を検討する

“`php
random_int(1, $pid_max), range(1,2**20));

$start = microtime(true);

元記事を表示

ページングしながら全体の表示件数をある倍数にする

“`php
$maxPage = $lastPage = (int) ceil($totalCount / $this->getDisplayNumber());
// 1ページでおさまるときは調整しない
if (1 < $lastPage) { // 10件ずつにした際の端数 $modByTen = $totalCount % 10; // ページングした際の最終ページの件数 $modByDisplayNumber = $totalCount % $this->getDisplayNumber();

// 全てのページが埋まっているときや、もとから10の倍数のときは調整しない
if (0 !== $modByDisplayNumber && 0 !== $modByTen) {
$adjust = $modByDisplayNumber – $modByTen;

元記事を表示

XAMPP 8.2.0がリリースされましたん??

https://www.apachefriends.org/blog/new_xampp_20221229.html

こんにちはアパッチフレンズ!

PHP 8.2.0 用の Windows、Linux、および OS X 用の XAMPP の新しいバージョンをリリースしました。これらの新しいインストーラーはhttp://www.apachefriends.org/download.html からダウンロードできます。

これらのインストーラーには、次の主要コンポーネントが含まれています。

8.2.0-0

PHP 8.2.0
アパッチ 2.4.54
マリアDB 5.4.27
phpMyAdmin 5.2.0
OpenSSL 1.1.1p (Windows) および OpenSSL 1.1.1s (Linux および OS X)
PHP バージョン7.4.xは現在サポートが終了していますが、引き続きSourceForge XAMPP サイトから以前のバージョンをダウンロードできます。

OS X ネイティブ インストーラには、新しい OS X M1 および M2 (ARM アーキテク

元記事を表示

1292 Incorrect datetime value: ‘0000-00-00 00:00:00’のエラー

エラーが出て困ったのでメモです。
symfonyは自動でcreated_atやupdated_atが入らないようです。
idは入りましたが。

僕のローカルのmysqlが’0000-00-00 00:00:00’を許さない設定のようでこうなったようです。

実際のプロダクトだとmysqlの設定を変えるのがよさそうですが、今回はローカルだけの勉強用なので、簡単にこうしました。

“`
[error] Migration DoctrineMigrations\Version20xxxxxxxx failed during Execution. Error: “An exception occurred while executing a query: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘created_at’ at row 1”
“`

“`
An exception occurred while execu

元記事を表示

symfony5.4のコマンドまとめ

### 前提
Symfony 5.4

“`console
# ローカルサーバスタート
symfony server:start

# db作成
php bin/console doctrine:database:create;

# Entityクラス作成
symfony console make:entity XxxxXxxxx

# マイグレーションファイル作成
symfony console make:migration

# マイグレーションファイルからdb定義変更
symfony console doctrine:migrations:migrate

# マイグレーションファイルのどこまでやっているかを見れる
php bin/console doctrine:migrations:status

# コントローラ作成
symfony console make:controller XxxXxxxController
“`

元記事を表示

Mac,PHP環境構築(MAMP)

学校のPHPの授業でMacを使用している方が困っていたので投稿します。
学校ではXAMMPを使用していましたが、MAMPを使います。
https://www.mamp.info/en/downloads/
リンクからお使いの端末に合わせて、ダウンロードしてください。
MAMP PROは使わないので、自分は削除しています。
アプリを起動させたら、確認のためにファイルを作成名前は”check.php”中身は”
“`check.php

“`
としています。
![スクリーンショット 2022-12-30 3.19.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085337/b9179559-d8c3-ba0a-608c-3dde7fcb7345.png)
このファイルをFinderのアプリケーションのMAMPのhtdocsの中に入れます。

さっきのファイルをブラウザで表示したいと思います。
アプリの『Preferences』でポート番号を確認。

元記事を表示

but it does not match your minimum-stability.

composer.jsonがないときは

“`bash
echo {} > composer.json
“`

“`bash
composer config minimum-stability dev
“`

https://stackoverflow.com/a/65847508/5602117

エラー内容

“`bash
composer require amphp/http-client:v5.x-dev
./composer.json has been updated
Running composer update amphp/http-client
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
– R

元記事を表示

OTHERカテゴリの最新記事