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

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

ファイバーについて

たまたまマニュアルを読んでいたら、

PHP8.1から実装されたファイバーがどこかで使えそうだなーと思い、

学習と備忘録がてら記事にします。

## [ファイバー](https://www.php.net/manual/ja/language.fibers.php) とは
PHP8.1から実装された、完全なスタックを持つ、停止可能な関数のことです。

ファイバーは、コールスタック中のどこからでも停止することができ、

[非同期処理](https://qiita.com/yunity29/items/7ccc84d47e139340ecbc)や[ブロッキングI/O操作](https://wa3.i-3-i.info/word1618.html)に対して効果的らしいです。

“`PHP
// ユーザー定義関数を引数にし、ファイバーインスタンス生成
$fiber = new Fiber(function (): void {
$value = Fiber::suspend(‘fiber’);
echo “ファイバーの値: “, $value, PHP_EOL;
});

$v

元記事を表示

AMPHPを実行できる環境を用意する

## 概要
PHPで非同期処理の実装を行いたかった。8.1で導入されたFibersが組み込まれており、使用感がよさそうだったAMPHPを使える環境を用意してみたのでまとめます。

## 環境構築
dockerでローカルのコンテナ内にミニマムのphp動作環境を作ります。

## dockerfile
phpとcomposerをいれる。
“`dockerfile
# syntax=docker/dockerfile:1

FROM php:8.3.8-alpine

WORKDIR /app

# composer install
COPY –from=composer /usr/bin/composer /usr/bin/composer
“`

## docker-compose.yml
“`yml
version: “3.9”

services:
app:
build: ./
stdin_open: true
tty: true
volumes:
– .:/var/www/html
ports:
– 80

元記事を表示

Laravelのエラーハンドリングとデバッグについてまとめてみた

# はじめに
Laravelを使った開発において、エラーハンドリングやデバッグは重要なスキルです。本記事では、Laravelでのエラーハンドリング方法やデバッグテクニックについて紹介します。サンプルコードも交えて解説します。

# エラーハンドリング
Laravelでは、app/Exceptions/Handler.phpでエラーハンドリングを行います。このファイルには、例外を報告したり、特定の例外をレンダリングするためのメソッドが含まれています。

## カスタム例外ハンドラー
独自のエラーハンドリングロジックを追加するために、Handlerクラスを拡張することができます。

“`php

元記事を表示

自動テストの秘訣: テストメソッドを独立させる

この記事では xUnit (PHPUnit や JUnit など)を使った自動テストを作成する上での秘訣をご紹介します。

今回ご紹介する秘訣は「テストメソッドの独立」についてです。

## 独立していないテスト

サンプルとして、以下のようなメールアドレスを登録する機能について考えてみましょう。

– `register()` メソッドで、メールアドレスをDBに登録する。
– 登録時、アドレスが登録済みのものと重複している場合はエラーメッセージを返す。

これをテストするコードは、例えば以下のようになります。(PHP で書かれています。)

~~~php
public class SampleTest extends TestCase
{
/** テスト対象 */
private $testing;

public static function setUpBeforeClass(): void
{
// … DB を初期化する
}

public function setUp(): void
{

元記事を表示

【Laravel】ドキュメント生成ツールを作ってみた

# はじめに
プログラマー皆さん、ドキュメント書いてますか?処理フロー確認やレビュー、他人が作ったプログラムの理解を深めるためにドキュメントは大きな助けになります。一方で、Excelでドキュメントを作ってくださいとか、プログラム変更時にメンテナンスしなければいけないとか、とにかくメンドくさいですよね。このメンドくさいを減らすために、コントローラーに処理説明を書くだけでExcelドキュメント(処理機能記述書)を生成するツールを開発しました。
![スクリーンショット 2024-06-21 23.59.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962814/ecd4ad52-8fe8-b7e1-f201-e3fe55844d71.png)

# 仕組み
Laravelのコントローラーに、コメントのような処理説明を書いて実行する(画面を表示するなど)とミドルウェアがExcelドキュメントを生成します。
![スクリーンショット 2024-06-20 21.18.00.png](https://qiit

元記事を表示

PHPのエラーハンドリングとデバッグについてまとめてみた

# はじめに
PHPを使った開発において、エラーハンドリングやデバッグは重要なスキルです。本記事では、PHPでのエラーハンドリング方法やデバッグテクニックについて紹介します。サンプルコードも交えて解説します。

# 基本的なエラーハンドリング
PHPでは、try-catchブロックを使って例外をキャッチし、エラーハンドリングを行います。

“`php
getMessage();
}
?>
“`
# カスタム例外

元記事を表示

MacでローカルWebサーバーを素早くセットアップする方法

Macでローカル[Webサーバー](https://www.servbay.com)を素早くセットアップしたいですか?Apache、MySQL、PHPなどのコンポーネントを毎回手動で設定するのに疲れていませんか?ワンクリックで異なるPHPバージョンを切り替えたり、複数のバーチャルホストを簡単に管理したいと思いませんか?もし答えが「はい」なら、Macユーザー向けに設計された強力で便利なWeb開発ツール「ServBay」をぜひ試してみてください。

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zrqmkf16p437md3ylvpd.png)

[ServBay](https://www.servbay.com) の主な機能は次のとおりです:
– 存在しないドメイン(Domain)やサフィックス(TLD)をローカル開発で使用し、これらのドメインに対して無料のSSL証明書を作成できる機能が特徴です。これにより、HTTPS環境(例:https://api.servbay) で開発を行

元記事を表示

LaravelとMySQLを使ってCRUDアプリケーションを作成

# はじめに
この記事では、LaravelとMySQLを使用してCRUD(Create, Read, Update, Delete)機能を備えたウェブアプリケーションを構築する方法について説明します。LaravelはPHPで書かれた人気のあるフレームワークであり、MySQLは広く使用されているリレーショナルデータベース管理システムです。

# 環境の準備
まずはじめに、Laravelプロジェクトをセットアップし、MySQLデータベースに接続する必要があります。以下の手順に従って進めてください。

## Laravelプロジェクトの作成

“` bash
laravel new crud-app
cd crud-app
“`
## MySQLデータベースの設定
.envファイルでMySQLの設定を行います。

“` env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_username
DB_PASSWORD=yo

元記事を表示

Laravelのモデルとマイグレーションを利用してデータベースを操作してみた

# はじめに
Laravelにおけるモデル(Model)とマイグレーション(Migration)は、データベース操作を効率的に行うための重要な要素です。本記事では、これらの基本的な使い方と操作方法について解説します。

# モデルとは何か?
モデルはLaravelにおいてデータベースとのやり取りを担当するクラスです。各モデルは単一のデータベーステーブルに関連付けられ、そのテーブルのデータを操作するためのメソッドを提供します。

# モデルの作成
まず初めに、以下のArtisanコマンドを使用して新しいモデルを作成します。

“` bash
php artisan make:model Product
“`
これにより、app/Models/Product.php というファイルが生成されます。この中に Product モデルのクラスが定義されます。

# モデルの基本的な操作
例えば、Product モデルが products テーブルに関連付けられている場合、以下のようにしてデータを操作できます。

“` php
use App\Models\Product;

// レコード

元記事を表示

PHPの配列操作と便利な関数を解説

# はじめに
PHPの配列は強力で柔軟性があり、さまざまな方法で操作することができます。この記事では、PHPの配列操作の基本と、よく使われる便利な関数について紹介します。

# 配列の基本操作
## 配列の作成
PHPでは、配列を作成するためにarray関数や短縮構文[]を使用します。

“` php
// array()関数を使った配列の作成
$fruits = array(“Apple”, “Banana”, “Orange”);

// 短縮構文を使った配列の作成
$fruits = [“Apple”, “Banana”, “Orange”];
“`

## 配列への要素追加
[]を使って配列に要素を追加することができます。

“` php
$fruits[] = “Grape”;
“`

## 配列の要素へのアクセス
配列の要素にはインデックスを使ってアクセスします。

“` php
echo $fruits[0]; // “Apple”
“`

## 配列の要素の変更
配列の要素はインデックスを指定して変更できます。

“` php
$fruits[1] = “

元記事を表示

Laravelのルーティングを基本と応用に分けて解説してみた

# はじめに
Laravelは、非常に強力で柔軟なルーティングシステムを提供しています。ここでは、Laravelのルーティングについて基本から応用までをサンプルコードと共に解説します。

# 基本編
## ルートの定義
Laravelでは、ルートは routes/web.php ファイルに定義します。以下は基本的なルートの定義方法です。

“` php
Route::get(‘/’, function () {
return view(‘welcome’);
});
“`
この例では、/ にアクセスすると welcome ビューが表示されます。

## HTTPメソッドとルーティング
Laravelは、GET、POST、PUT、DELETEなどのHTTPメソッドに対するルートを定義することができます。

“` php
Route::get(‘/hello’, function () {
return ‘Hello, World!’;
});

Route::post(‘/submit’, function () {
return ‘Form submitt

元記事を表示

PHPの変数とデータ型についてまとめてみた

# はじめに
PHPはサーバーサイドのスクリプト言語で、Web開発において非常に広く使用されています。本記事では、PHPの変数とデータ型、基本的な操作について初心者向けに詳しく解説します。

# 変数の基本
PHPで変数を定義するには、ドル記号($)を使用します。変数名は英数字とアンダースコア(_)を使用できますが、数字で始めることはできません。

## 変数の宣言と代入
“`php

“`
上記の例では、$name、$age、および$is_studentという3つの変数を宣言し、それぞれに文字列、整数、ブール値を代入しています。

# PHPのデータ型
PHPには主に以下のデータ型があります:

– 文字列(String)
– 整数(Integer)
– 浮動小数点数(Float / Double)
– ブール値(Boolean)
– 配列(Array)
– オブジェクト(Object)
– NULL

## 文字列(String)
文字列は、ダブルクオート(”)

元記事を表示

【Laravel】プロジェクト事前準備④~PHPデバッグ環境構築(PHP Debug)

# PHP Debug
 Xdebugと通信し、VSCode上で視覚的なPHPのデバッグを実現するための拡張機能です。
# 前提条件
PHP(XAMPP)・Composer・Xdebugのインストールが完了していること。
以下の記事の続きです。
**PHP(XAMPP)**

https://qiita.com/moko_san/items/b3b7d6000db68735aa14

**Composer**

https://qiita.com/moko_san/items/6b69d408d2ba0eccdb88

**Xdebug**

https://qiita.com/moko_san/items/baee8f277eb29889a71c

# 1. PHP Debugのインストール
### ① VSCodeで「PHP Debug」をインストールする
**(1) VSCodeを起動し、アクティビティバー[拡張機能] > [PHP Debug]を検索する**
![PHPDebug01.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

Laravel入門:LaravelでHelloWorldしてみよう!

# はじめに
Laravelは、PHPで書かれたオープンソースのWebアプリケーションフレームワークで、開発効率を高めるための豊富な機能を備えています。本記事では、Laravelのインストール方法と、シンプルなWebアプリケーションを作成する手順を紹介します。

# 前提条件
– PHP 8.0以上
– Composer

# Laravelのインストール方法
## 1. Composerのインストール

LaravelはComposerを利用してインストールします。まだComposerがインストールされていない場合は、以下のコマンドでインストールしてください。
“`bash
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php composer-setup.php
php -r “unlink(‘composer-setup.php’);”
mv composer.phar /usr/local/bin/composer
“`

## 2. Laravelのインストール
Comp

元記事を表示

PHPに入門:基礎文法を学んで初めてのプログラムを書いてみた

# はじめに
PHPを使い始めることになり、最近基礎文法などを学んだため、アウトプットとしてまとめて見ることにしました。本記事では、PHPの基本的な文法と初めてのプログラムの書き方を解説します。

# PHPとは
PHPは、動的なウェブページを作成するためのサーバーサイドスクリプト言語です。初心者にとって学びやすく、強力な機能を持つPHPを使えば、ウェブアプリケーションを簡単に作成できます。

# PHPの基本文法
## PHPタグ
PHPコードは、 タグで囲まれます。このタグの中にPHPコードを書きます。
“` php

“`
## コメント
コメントはコードの説明やメモを書くために使用します。
“` php

“`
## 変数
変数はデータを格納するために使用します。変数名は $ 記号で始まります。
“` php

元記事を表示

WordPress.comのアプリケーションパスワードは2段階認証をONにしないと使えないよ

:::note warn
【注意書き】
皆さんがよく知っているWordpressはサーバを自分で用意するタイプのWordpress「`Wordpress.org`」であり、自分が今回話す`Wordpress.com`はまた別のサービスです。
:::

`Wordpress.org` のアプリケーションパスワード(WordpressのREST APIを使うために必要な認証パスワード)は、ユーザ一覧からすぐ作成することができます。
しかし、`Wordpress.com` のアプリケーションパスワードは、作成したばかりの状態では設定できません。
設定しなくても、ログインパスワードを使ってREST APIの認証をすることもできますが、セキュリティ的によろしくないです。
ということで、アプリケーションパスワードの設定方法を紹介します。
# 手順 
## 右上のユーザアイコンをクリック
![スクリーンショット 2024-06-23 17.07.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/374872/0bd

元記事を表示

pearを実行するとエラーが出た時のメモ

## 昨今のpearやpecl

最近はあんまり使わなくなりましたよね。
でも、今回はちょっと面倒な処理を行うのにpearがいるので久しぶり実行すると、以下の様なエラーがでた。

## エラー

“`
# pear version

Warning: foreach() argument must be of type array|object, null given in Command.php on line 249
PHP Warning: foreach() argument must be of type array|object, null given in /usr/share/php/PEAR/Command.php on line 249
PHP Stack trace:

“`

## 結論

設定ファイルのxmlが読めなくなっていたようです。
大分前に、php自体をバージョン上げた時に、xmlが動かなくなっていたのかも?
いや、そもそもxmlを使わなくなってきたから入れてなかったのか?
兎にも角にも、xmlをインストールしました。

“`
sudo

元記事を表示

はじめてのLaravel 〜 Blade #2

# 環境
– PHP 8.2
– Laravel 11

:::note warn
注釈
Laravelの環境構築は完了済みの状態からスタートします
:::

# インストール
Composerを使用してローカル環境でLaravelプロジェクトを作成します。

~~~
composer create-project laravel/laravel chirper
~~~

phpのバージョンがサポート期限内であることが必要なようなので、うまくいかない場合は“ php -v “などでバージョンを確認して、必要に応じ更新しておくと良さそうです。

Composerの“ create-project “コマンドでは、DBとしてSQLiteデータベースを“ database/database.sqlite “に自動的に作成してくれるようです。
プロジェクトが作成されたら、Laravelのartisanコマンドを使用してローカル開発サーバーを起動します。

“`
cd chirper
php artisan serve
“`

これによりhttp://localhost:8000

元記事を表示

スマホでペット用監視カメラを作ってみた その2

# はじめに

[前回](https://qiita.com/noji505/items/c8649056607b160655bf)はスマートフォンを使って家に居るワンちゃんの確認が出来るように監視カメラの作成を行いました
今回は外から家でお留守番中のワンちゃんに呼びかけるための音声再生機能を追加したいと思います

# 音声再生について

・大きく以下の機能追加が必要となります
1.スマートフォンのマイクを使用して音声を取得する
2.取得した音声を再生する

【マイクの利用方法】
SpeechRecognition APIを使用することでマイクの音声認識が可能になります
使用方法のソースは下記になります

“`javascript:SpeechRecognitionサンプル



SpeechRecognitionサンプル