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

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

再実行のやり方とGotoとエラー処理

仕事で開発やっていて、phpの仕様について誤解していたので反省がてら。

とりあえずコード。
下は、try内容がエラーになった時、3回は再実行し
それ以降は対応できなかったとアラートを出して終了するという処理だ。

“`test.php
//変数宣言と初期化
$i = 0;
repeat:
try {
//try内の内容
echo (12/0);

} catch ( Exception $e ) {
//エラーしたら行われる処理
//4回以下なら上に戻る
if ($i <= 2){ $i++; print($i.'回目の再実行をします'); goto repeat; } else { print('3回再実行をしましたが、対応できませんでした'); exit; } } finally { //エラーしてもしなくても実行される処理のはず //エラー処理の場合は、exitされるはずなので、

元記事を表示

【Laravel】アクセサ/ミューテタの基本

# アクセサとは

アクセサは、Eloquentのプロパティにアクセスが合った時に値を変換する処理のこと

# ミューテタとは

ミューテタは、Eloquentのプロパティを設定するときに、その値を変換する処理のこと。

# どういう時に便利か

例えば、ユーザ追加APIがあったとします。その機能では、ユーザテーブルにメールアドレスを登録するとき、暗号化して登録する必要があるとします。

その場合、メールアドレスを暗号化する処理をコントローラもしくはサービスに実装するかと思います。復号処理についても同様です。

しかし、仮に友達追加APIみたいなのがあった場合、上記の方法だと友達追加APIのコントローラ、サービスにも暗号化の処理を実装する必要があります。

見ての通り、各機能ごとに毎回記述するのは冗長した記述とも言えます。

そこで、メールアドレスを登録する際に**ミューテタ**を使用すれば、暗号化部分の処理を毎回記述する必要がなくなるのでシンプルになります。

# ミューテタの記述方法

ミューテタの記述方法は以下の通りです。

“`php:User.php
/**
* emai

元記事を表示

【EC-CUBE】 プロジェクトをpublic_html配下にインストールする方法

# 初めに
どうも、フランスでプログラマーとして働き始めて1週間ほどの新人エンジニアです。

今回、案件でEC-CUBEのインストールからやらせてもらった時に、詰まったところを

備忘録として残します。

## 状況
EC-CUBEの4.2をインストールしたかったので下記を参考にした。
https://doc4.ec-cube.net/quickstart/command_install
上記の公式ドキュメントでコマンドからインストールする手引きでインストールを行うと、
`public_html/ec-cube/`配下にインストールされてしまう。

サーバー:Xserver
OS: Linux

### やりたいこと
ドキュメント直下に配置したい。

## 解決方法
一度`public_html/ec-cube/`配下にインストールする

その後中身の階層を一階層上げる

## やり方
①まずはpublic_htmlにcomposer.pharをインストールする

②ec-cubeをインストールするコマンドを打つ(この時にec-cubeディレクトリが作成される)
“`
php co

元記事を表示

エンジニアインターン2日目

今日はLPのチェックボックスの修正を行った。
JavasctiptやjQueryを使ってチェックの位置を変更しようとした。
そこでnet::ERR_ABORTED 404のエラーが発生した。
調べたところパスがずれていることが問題だった。
この前新しくjsのファイルを作成したところjsファイルを読み込ませようとlinkを読み込ませたところが問題であった。このことを先輩エンジニアに質問したところ一瞬で解決した。linkを消すだけのことだった。
簡単なエラーだったからこそ恥ずかしいし悔しかった。しかし、エラーを解決するための考え方を学ぶことができた。
今はとにかく何でも吸収することが大切であると思う。一日中コードに向き合えるこの機会を大切にしていきたい。

元記事を表示

laravel-permissionを利用したロールベースアクセス制御(RBAC)を実装する

## はじめに
RBAC方式でアクセス制御をすることになったので、larave-permissionの概要を簡単にまとめていきます。
初心者の方向けに簡単に概要を把握できるように書いていきます。

## laravel-permissionとは
Laravelのプラグインの1つで、**RBAC方式**などの**アクセス制御**を実現することができます。

## RBAC方式とは
RBAC方式とは、「**ある対象(例えばユーザー)**」に「**ロール(一般ユーザー・管理者など)**」という概念が割当てられるようにしたものです。この**ロール**に対して、「**何ができるか**」という権限が付与される方式のことです。

例えば、「勉強会の一般参加者は**GUESTカード**を渡され、運営側の人は**STAFFカード**が渡される。**STAFFカード**を持っている人は**特定の部屋に入ることができる**。」というように特定の**ロール**に、特定の**行動許可**が付与されるようなイメージです。

## インストール&設定方法
larave-permissionはcomposer経由でイ

元記事を表示

【Laravel】API仕様書と実装のテストにツールとしてSpectatorを検討してみた

みなさんはSwagger Editor等で作成したAPI仕様書と実装の乖離をどのようにテストしていますか?

多くの記事で目にするのは、**openapi-psr7-validator**というライブラリです。

https://github.com/thephpleague/openapi-psr7-validator

こちらは**PSR-7に準拠したバリデータを使用する**ため、リクエストとレスポンスもPSR-7仕様に変換するという、少し面倒な工程が必要となります。

もう少し手軽にテストができるライブラリがないか探していたところ、こちらの**Spectator**というライブラリを見つけました。

https://github.com/hotmeteor/spectator

こちらもリクエストとレスポンスの型をテストできるらしく、試しに使ってみたのですが・・・という記事になります。

# 環境
PHP 8.0.8
Laravel Framework 8.58.0
Spectator v1.7.1

# 仕様書の保存場所に注意
今回OpenAPI Specのyamlをapp/O

元記事を表示

phpでコードカバレッジを取得しながら手動テストをする方法

## はじめに
手動テストを行いながら、バッググラウンドでカバレッジデータを保存し、後で一括してレポートを生成する方法をまとめました。
プログラムを書いた後、テストをしながら実行していない場所がないかを目で確認することができるようになります。
(本来はユニットテストを書けば良いのですが、いろいろ困難な場合もあるので、手動テストでカバレッジを確認できる仕組みが欲しかった)

* レポートの出力サンプル([php-code-coverage](https://github.com/sebastianbergmann/php-code-coverage))
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276579/6e1ed81e-fc54-d800-8af3-1f7b4509f4f4.png)

* CakePHP2で試していますが、環境変数で保存先を指定できますので、環境には依存せず使えるはずです。
* (環境が少々古いので、最新環境だと多少ソースの変更が必要)

## 動作確認

元記事を表示

PHP 虎の巻(あんちょこ)

# PHP のプログラミングに関する情報
> https://www.php.net/manual/ja/appendices.php

| 詳細情報 | 詳細リンク |
| :—- | :—- |
| 関数・メソッドの一覧 | https://www.php.net/manual/ja/indexes.functions.php |
| マニュアル内の全サンプルの一覧 | https://www.php.net/manual/ja/indexes.examples.php |
| PHP 型の比較表 | https://www.php.net/manual/ja/types.comparisons.php |
| リソース型の一覧 | https://www.php.net/manual/ja/resource.php |

# PHP の設定/構築に関する情報
> https://www.php.net/manual/ja/appendices.php

## 製品サポート期間の確認
– [PHP: Supported Versions](https://www.ph

元記事を表示

エンジニアインターン1日目

今日は基本単純作業を行った。
今日は学ぶことより感じたことの方が多かった。
ゴリゴリ開発している先輩エンジニアの横で単純作業…
恥ずかしい気持ちと悔しい気持ちがあった。
一日も早く自立できるエンジニアになりたいと思った。
そう思うからこそ今やっていることを一生懸命取り組んでいきたい。

元記事を表示

可変長引数(PHP)

PHPで引数を可変長で渡すテストプログラムを実装しました。

“`PHP
// 可変長引数で合計を計算する
function sum(…$numbers)
{
$total = 0;
foreach($numbers as $number){
$total += $number;
}
return $total;
}

// ブラウザ表示
function disp($num){
echo “

${num}

“;
}

$total1 = sum(3,4,5);
disp($total1);

$total2 = sum(1,3,5,7,9,11);
disp($total2);

“`

元記事を表示

Laravel Sanctumを使ってSPA認証を実装する

## Laravel Sanctumとは
Laravel Sanctumは、SPA(シングルページアプリケーション)、モバイルアプリケーション、およびシンプルなトークン・ベースのAPI向けの簡単な認証システムを提供します。

https://laravel.com/docs/9.x/sanctum#introduction

## 設定方法
### インストール
Composerを使ってインストールします。
“`
composer require laravel/sanctum
“`
次に下記コマンドを実行します。これにより、vendor/laravel/sanctum/database/migrationsの中身がdatabase/migrationsにコ、vendor/laravel/sanctum/config/sanctum.phpがconfig/sanctum.phpにコピーされます。
“`
php artisan vendor:publish –provider=”Laravel\Sanctum\SanctumServiceProvider”
“`
今回「dat

元記事を表示

初心者必見!Laravelを使うならCollectionを活用しよう

開発をしているとArray型のデータを扱うことが多くあります。

PHPにはArrayに関する様々な関数が実装されていますが、
イテレートや値の変更という点でコードが読みにくくなりがち
という欠点もあります。

### Arrayは `array_xx()`の引数となることで変化する場合が多い
もし、下のコードでreturn の結果が実装者の予想と異なり原因を調査したいとして

“`php
$numbers = [1, 2];
・ // 間に何十行も処理がはさまっているとする
$numbers = [1, 2, 3];

return $numbers;
“`

↑こうしたケースでは、$numbersがどう変化したかは追いやすいですが、次のようなケースではどうでしょう?

“`php
$numbers = [1, 2];

array_push($numbers, 3);

return $numbers;
“`

↑$numbersの動きが少し分かりにくくなったかと思います

“`php
$numbers = [1, 2];

元記事を表示

PHP 繰り返し処理記述のコツ

はじめに

普段からループ処理を書いていると、途中で何を書いているかわからなくなったり、順番がおかしくなったりすることが多々あったのですが…

良い方法を学んだので書き残しておきます。

繰り返し処理のコツ

1.日本語で本文の処理を書く
2.コードに置き換える
3.ループで囲む
4.変数の初期化等を追記する

以上4つの順番で処理を書いていきます。
感覚としては、ループの内側から外側にむかって順番に書いていく感じです。

スーパーで複数の商品を購入して、その合計金額を算出する繰り返し処理

1.日本語で本文の処理を書く

“`php
//料金を取得する
//料金を合計する
“`

2.コードに置き換える

“`php
//まぁ料金は$price変数にしようかな~
//購入した商品は$itemにして~
//連想配列でpriceっていうキーを持ってて、そこに値を持ってる感じにしよう
$price = $item[‘price’];

//次は料金を合計したいから、$totalに値段を足していけばいいか~

元記事を表示

About Access denied for user ‘root’@’172.20.0.1’ error

自分用メモ
docker + mysql が接続できない状態をこちらの記事で解決できました。

https://qiita.com/fumi_042/items/7d1c14e335ab1c226e0f

元記事を表示

javascript function からphp sessionへデータを渡す?

PHPとJavascvriptの組み合わせによるSESSIONデータの受け渡しを行うサンプルを、AjaxのsendRequestを利用して遷移せずに、PHPプログラムへSESSION関数としてデータを渡す例を記述してみました。
だいぶ以前から使っている、Ajaxライブラリー/ajax/lib/jslb_ajax.jsを使っています。
また、callbackを使えば、遷移せずにデータを取得することも可能です。
dataget.php
“`
“`
上記のようにPOSTデータをSESSIONデータとして受け取るとして、送る側のjavascriptの記述を下記のようにしてみます。
HTML
“`