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

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

PHP+JavaScriptでSPA開発(WSL2/Docker)

## はじめに

PHPとJavaScriptを使って、非同期で動くToDoアプリを作成します。フレームワーク等を使わずに実装していきます。

#### 作成するアプリの仕様
– タイトル、内容の追加

– 文字数のバリデーション機能

– 削除

元記事を表示

SalesforceのWeb-to-リードでサーバーにリクエストを通してから、Salesforce に登録する。

## Web-toリードとは
Salesforceにリードを登録するときに直接フォーム->Salesforceに登録できるものです。
フォームの作成もポチポチ設定すればできるので非常に便利ではあるものの、
フォームのバリデーションはフロントのみでバックエンドを通さないのでできなかったりするのでそのまま使うと少々不便だったりします。

## どうやったか
フォームの作成で生成されたパラメータを元に
バックエンドでGuzzleでリクエストしただけです。
これについて調べると、curlでの英語の記事しかなかったので、サクッと記事にしました。

“`php5
use GuzzleHttp\Client;


.
class SalesforceWebToLeadService
{
public function post(array $params)
{
// $params は key-valueでパラメータを作成してください 例: first_name => ‘HOGE’ など
// oidは必ず入れる
$par

元記事を表示

PHP laravel 新規作成方法まとめ

Dockerでの新規作成方法まとめの自分用メモ
# PHP
“`shell
docker run -p 4000:80 -v ${PWD}:/var/www/html -d php:apache
“`
参考:https://gray-code.com/blog/php-on-docker/
mysqlもつける場合: https://and-engineer.com/articles/Ybx0hREAACEAgRY9

# laravel sail
“`shell
curl -s https://laravel.build/ |bash
“`
とか
“`shell
curl -s “https://laravel.build/?PHP=81″ |bash
“`
参考: [Amazon プロフェッショナルWebプログラミング Laravel〈最新Laravel 9対応〉](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%8

元記事を表示

laravelで実際に発行されたSQLと処理時間を確認する

## はじめに
いつも忘れるので備忘録として残しておく

## コード
~~~php
DB::enableQueryLog();
$time_start = microtime(true);

//計測したい処理やSQL(複数発行されれば複数dumpされる)
$user = User::where(‘id’, 10000)->get();

$time = microtime(true) – $time_start;
dump($time);
dd(DB::getQueryLog());
~~~

## 発行されるSQLを確認したい時
~~~php
$user = User::where(‘id’, 10000)->toSql();
dd($user);
~~~

## おまけ
取得したコレクションを配列にしてログに吐く
~~~php
$user = User::where(‘id’, 10000)->get();
LOG::info(print_r($user->toArray(), true));
~~~

元記事を表示

GoogleHomePlayerを非同期実行させる

# 1.はじめに

 ジュークボックスサーバーを造ったのですが、言っても再生リスト順に再生開始、停止させているだけです。ただ、リクエスト元のgoogleAssistantからはジュークボックスの状態とは(だいたい)無関係に要求を投げて来るので、適時応答を返してあげる必要があります。
 その仕掛けとしてフルフィルメントとジュークボックスの間にキューを置いて、同期しないようにしています。
 ジュークボックスは定期的にキューを参照してリクエストがあればその要求に応じた動作をする――わけですが、キューの参照間隔(下図の①)が長いとレスポンスが悪くなり、キューサイズも有限ですからパンクする可能性が高まります。
 キューの参照間隔を大きく左右するのはgoogleHomePlayerの実行動作になります。そもそも1曲の再生が終わるまで次の曲に移れません。実装では無駄にCPU利用率が上昇しないように1秒以下のスリープを入れていたりするのですが、曲の再生では3分くらいはかかるのでスパンが2桁ほど違います。
 つまり、以下2点を実装する必要があります。
1)曲の再生終了は拾わなければならない
2)キューの

元記事を表示

プログラミング学習総括(半年)

## はじめに
プログラミング学習を始めて半年が経ちました。非常に大変でしたが、自分も驚くほど成長できたと思います。

## 1.学習成果
| | 項目 | 時間(h) |
| —- | —- | —- |
| プログラミング言語 | java, spring boot | 90 |
| プログラミング言語 | php | 100 |
| プログラミング言語 | javaScript | 30 |
| プログラミング言語 | HTML&CSS | 20 |
| 資格 | ITパスポート | 70 |
| 資格 | 基本情報技術者試験 | 120 |
| その他 | Git, GitHub, AWS, Linux, SQL(MySQL, oracle), 環境構築等 | 70 |
| 合計 | ー | 約500 |

## 2.感想
未経験からWeb系会社へ転職するには1年間(**1000時間の学習時間**)が必要だと言われています。
私は最初何もわからない状態からスター

元記事を表示

Laravel9 artisanコマンド 一覧

実際に使用した、Laravel artisan コマンドを備忘録的にまとめていきます。
(随時返信、Laravel9用)

## controller作成

“`
// ルーティングの一覧を、ターミナルでパパっと確認したい時
% php artisan r:l
“`

“`
% php artisan r:l

GET|HEAD / ………………………………………………………………………………………………………………
POST _ignition/execute-solution ………………….. ignition.executeSolution › Spatie\LaravelIgnition › ExecuteSoluti

元記事を表示

Ubuntu22.04にPHPをバージョンを指定してインストール

2022.11.12現在
# 環境
1. Ubuntu22.04

この記事ではUbuntu22.04でPHP7.4(を含めた過去バージョン)のインストール方法を示します。

# PHPのインストール
## 通常版
“`console:cmd
$ sudo apt install -y php
“`
有無を言わさずPHP8.1がインストールされます。

## バージョン指定版
### バージョン7.4の存在確認
“`console:cmd
$ sudo apt search php7.4
libapache2-mod-php7.4/jammy-updates,jammy-security 8.1.2-1ubuntu2.8 amd64
Transitional package
“`
何かヒットしますがPHP7.4本体ではない模様

### リポジトリを追加
Ubuntu22.04の標準リポジトリにはPHP7.4がない為、PHP7.4を持っているリポジトリを追加
“`console:cmd
$ sudo add-apt-repository ppa:ondrej/php

元記事を表示

laravelとstripeで決済する

今までコピペコピぺで凌いできたので整理する

まずはプロジェクトを任意のディレクトリに作成
“`
composer create-project laravel/laravel stripetest “8.*” –prefer-dist
“`
(これでできない場合、プロジェクト作成の段階でバージョンに原因があったり、使っているサーバーのPHPのバージョン、composerのパス等調べてみてください。)

続いてプロジェクト内に入ります。
“`
cd stripetest
“`
そしてstripeのパッケージが要ります。casierというパッケージをインストールしましょう。
“`
composer require laravel/cashier
“`

ところがどっこいエラーが出ることも
“`
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Root composer.json requires laravel/cashier ^

元記事を表示

【Laravel】Eloquentで1つのカラムの情報を取得

# はじめに
Eloquentで1つのカラムの情報を取得する方法について調べた際にいくつかの方法が出てきたので、取得した結果をまとめてみました。

# selectを使って取得
**取得方法**
“`php
$name_data = CategoryModel::select(‘name’)->get();
“`

**結果**
“`json
[{“name”:”氏名”},{“name”:”電話番号”},{“name”:”性別”},{“name”:”郵便番号”},{“name”:”市区町村以下”},{“name”:”都道府県”},{“name”:”テスト”},{“name”:”生年月日”}]
“`

# getを使って取得
**取得方法**
“`php
$name_data = CategoryModel::where(‘chain_id’, $request[‘chain_id’])
->get([‘name’])
“`

**結果**
“`json
[{“name”:”氏名”},{“name”:”電話番号”},{“name”:”性別”},

元記事を表示

macを買い替えたり、brewが壊れたりしてbrew自体を最初から入れないしたいときに再度入れておきたいライブラリ等

## brew

個人のPC汚したくないからコンテナ内でinstallすればいいじゃないかという話は置いといて、phpやcomposerやyarnやnodeなどのライブラリの導入管理をするためのツール。nodeを管理するための`n`も`brew`で導入できる。
macユーザー必須のパッケージ管理ツール。

https://brew.sh/index_ja

“`bash
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

バージョン等確認。

“`
% brew info
54 kegs, 19,016 files, 695MB
% brew -v
Homebrew 3.6.10
Homebrew/homebrew-core (git revision b3600170839; last commit 2022-11-11)
Homebrew/homebrew-cask (git revision a7fa89f029; la

元記事を表示

簡単なforeach処理をarray_mapとアロー関数で書き換えて高速化してみる

この記事は、PHP8以降のユーザー向けです。
なぜなら、PHP7以前の場合は、array_mapよりもforeachのほうがパフォーマンスで有利だからです。

PHP8のJITコンパイラの実装により、array_mapのcallableが最適化されるようになりました。そのため、PHP8以降では、適宜array_mapを利用したほうが高速なようです。
特にアロー関数を使った場合は、通常のcallableを呼び出すよりも更に高速です。

そこで、本稿では今までforeachで実装されていた処理をarray_mapとアロー関数を用いて高速化する手法を紹介したいと思います。

※個人的見解が含まれていますので、間違いがあればご指摘ください。

# 1.簡単なforeachを書き換え
まずは以下のようなforeach文を書き換えてみましょう。

“`php

元記事を表示

【PHP】【多次元配列】配列を追加していく array_merge() 不要論

# コード
“`PHP
‘田中’, ‘japanese’ => 83, ‘math’ => 57, ‘science’ => 43, ‘social’ => 72, ‘english’ => 78],
[‘name’ => ‘渡部’, ‘japanese’ => 62, ‘math’ => 88, ‘science’ => 70, ‘social’ => 66, ‘english’ => 38],
[‘name’ => ‘品川’, ‘japanese’ => 23, ‘math’ => 33, ‘science’ => 53, ‘social’ => 17, ‘english’ => 7],
[‘name’ => ‘滝谷’, ‘japanese’ => 93, ‘math’ => 89, ‘science’ => 79, ‘social’ => 96, ‘english’ => 91],
[‘name’ => ‘川原田’,’japanese’ => 55, ‘math’

元記事を表示

LaravelをインストールしたEC2 に Supervisor を導入する

# はじめに
LaravelのSupervisorを使用してworkerプロセスを管理するため、Ec2にSupervisorを導入する流れをまとめました。

# 初期構築

EC2 Laravelは、下記記事で構築済み。

https://qiita.com/hirai-11/items/ea6cfe997c254375e811

ルートディレクトリは、`/var/www/html`です。
`/var/www/html`配下に laravel の public や storage があります。

# Supervisorをインストール
まず、epelをインストール後、supervisorをインストールします。
“`terminal
$ sudo amazon-linux-extras install -y epel

$ sudo yum –enablerepo=epel install -y supervisor

$ supervisord -v
3.4.0
“`
`/etc/supervisord.d`配下に管理プロセスファイルを新規作成します。

“`terminal

元記事を表示

スマート(かもしれない)ジュークボックスサーバーを作る

# 1.はじめに
 googleAssistantにある`SOUNDBAR`デバイスとして振る舞うサービスを作り、音声指示によって送られてくる具体的なコマンドもだいたい把握できました。他にも操作指示はあると思うのですが、喋りつかれるので最低限の「再生」「停止」「セットリストの変更」ができれば個人的には十分です。それぞれの指示で送られてくるコマンドについては「[OK、グーグル。ジュークボックス、プレイ](https://qiita.com/SSaitou/items/7da8ead299fad0f002fb)」にまとめています。
 あとはそれらのコマンドに応じた振る舞いをするサーバーを作成するのみとなります。また、今回は全体の概要説明に留めて個々の具体的な作りは稿を改めようと考えています。
# 2.全体の造り
 簡単に全体の造りを説明しておきます。
![googleAssistantButlerSystem.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696131/2471efd3-3617-2dfc

元記事を表示

PHPバージョン変更点をピックアップ(8.x ~ 8.1)

7.4以前のまとめは[こちらです](https://qiita.com/RyutaKojima/items/d9a968ab6a1721736938)

# [PHP 7.4.x から PHP 8.0.x への移行](https://www.php.net/manual/ja/migration80.php)

[新機能](https://www.php.net/manual/ja/migration80.new-features.php)

– [名前付き引数](https://www.php.net/manual/ja/functions.arguments.php#functions.named-arguments) のサポートが追加されました。
“`
myFunction(paramName: $value);
array_foobar(array: $value);

// 以下の書き方はサポートされていません
function_name($variableStoringParamName: $value);
“`

元記事を表示

php 開発環境構築

“`
apache インストール
https://mebee.info/2020/04/17/post-9589/
ダウンロード>解凍

php インストール
https://webkaru.net/php/windows-php-instal/
ダウンロード>解凍
phpl.ini 編集
extension_dir = “c:/php/ext”
display_errors = On

httpd.ori.conf 編集
ServerName localhost:80
LoadModule php_module c:/php/php8apache2_4.dll

PHPINIDir “c:\php”


AddHandler php-script .php
AddType application/x-httpd-php .php

Composer

元記事を表示

laravel mysql sql 速度計測

# 速度を計測しちゃおう

phpやsqlで処理時間を計測したいときがある。
そんなときはサクッと!

“`hoge.php

$start = hrtime(true); // 計測開始時間

// ここに計測したい処理を書く
// 計測したい処理を書くここまで

$end = hrtime(true); // 計測終了時間
$nano_sec = $end – $start;
$sec = $nano_sec / 1000000000;
echo ‘処理時間:’. $sec .’秒’ . ‘
‘;
die;
“`

以上

元記事を表示

PHP function_exists

# 概要

– PHPの`function_exists()`関数を簡単にまとめる。

# 内容

– `function_exists()`関数は引数に取った関数が組み込み関数、ユーザー定義関数のいずれかで定義済みかを確認する。
– 定義済みの場合trueを、定義されていない場合falseを返す。
– 例1(下記は「関数は存在しません」と出力される。)

“`php

元記事を表示

htaccessがどうも動かなかったとき・・

Dockerでphp:8.1-apache-bullseyeのイメージに
Laravel+Jetstreamで環境構築していたら
/login /registerのページが404 not foundで動かない・・

何度入れ直してもだめだったので、htaccessかな?って思うようになって
でも、微妙にhtaccessは動作していて、??だったが
ふとapache moduleを確認していたら

“`
# apache2ctl -M
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (s

元記事を表示

OTHERカテゴリの最新記事