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

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

負荷テストする時大量データ作成プロシージャ

DROP PROCEDURE `proc_test01`
/
CREATE DEFINER=`homestead`@`%` PROCEDURE `proc_test01`(IN input int(1))
BEGIN
SET @start_idx = 0;
SET @customers_info_id = 100000;
SET @point_card = 7130010000 ;
loop1: LOOP
SET @start_idx = @start_idx + 1;
SET @customers_info_id = @customers_info_id + 1;
SET @point_card = @point_card + 1;
IF @start_idx > input THEN LEAVE loop1;
END IF;

# カード会員情報の登録
insert into DB.table1(card_info_id,customers_info_id,asp_card_main_id,asp_card_

元記事を表示

Laravel9でつまずいたところ

## Laravelスタートの見習いエンジニア
自分が学習していく中でつまずいたところをメモします。

まずはMVCの動き方とかを知るために職場の方から教えていただいたこちらのサイトをもとにTODOアプリを作成することにしました。
https://www.hypertextcandy.com/laravel-tutorial-introduction

### 環境
Laravel9+Docker+mysql+nginx
PHP 8.1.14
editor: PHPStorm

### 今日つまずいたところ
Routingはあっているはずなのに
“`
target class [クラス名] does not exist.
“`
のエラーが表示される・・・

### 解決
どうやらLaravel8とLaravel9では動作が違うという
(そりゃそうだよな・・・)

### 参考記事
https://biz.addisteria.com/laravel_route_error/
とても助かりました。
先駆者の方でこうしてまとめてくださるのは本当にうれしいこと
ありがとうございます。

元記事を表示

[WIP] PHP でデータベースに接続する PDO

:::note note
初学者の独り言メモです
PDO について DB への接続・切断、SQL を発行する部分を分けたり、例外処理、プレペアードステートメント、DAO などぼんやり理解したものの本や記事によって異なる関数が使われているのを多く見かけました。プレースホルダの書き方の違いや関数の記述の違い、関数をどう使い分けるのかを知ろうというのが目的です。書き起こしながら理解を深めようと随時加筆・修正していきます。ここで使用するデータベースは MySQL です。 JDBC ドライバ接続についても理解しないと。
:::

データベースに接続するための抽象化レイヤーが PHP に用意されています。「PHP Data Objects(PDO)」が用意されています。今回「**PDO クラス**」を使います。
参考:[PDO:PHP – Manual](https://www.php.net/manual/ja/book.pdo.php)

:::note warn
抽象レイヤーとは何かは後回し
:::

**PDO クラス** のインスタンスを生成してデータベースに接続しますが、データベース接

元記事を表示

【doctrine】Specを使用してデフォルトで条件の入ったdoctrineのオブジェクトを出力したい

## 環境
php7
Symfony3

## そもそもSpecとはなんぞや
[Doctrine-Specification/0-usage.md at 2.x · Happyr/Doctrine-Specification](https://github.com/Happyr/Doctrine-Specification/blob/2.x/docs/0-usage.md)

doctrineのクエリよりも簡素に書けるよ―というライブラリらしい。
~~全然慣れない~~

## 首題について

“`php
$spec = Spec::andX(
Spec::isNotNull(‘hoge’),
);
“`

これだけで済んだ、、、
まあ慣れなんですかね、、、
ジョインして間もないので解決しても腑に落ちないところはある。

元記事を表示

WSL2でのLaravel開発の流れ(自分用メモ)

自分用の備忘録としてLaravel導入の流れをまとめます。
## 目次
* 環境
* WSLの準備
* Docker Desktopのインストール
* Laravelのプロジェクト作成

## 環境
* Ubuntu 20.04
* WSL2
* PHP 7.4.3
* Laravel9

## WSLの準備
1. Powershellを管理者権限で実行する。
2. 下記のコマンドを実行する。
“`shell
wsl –install
“`
3. PCを再起動する。
4. 再起動すると ubuntu のターミナルが自動的に立ち上がるのでユーザ名とパスワードを設定する。

## Docker Desktopのインストール
1. 下記のURLにアクセスし、ダウンロード -> インストールする。
https://www.docker.com/products/docker-desktop/
2. 完了したら画面の指示にしたがって windows からログアウト → ログインする(再起動でも OK)。

### Dockerの動作確認
1. Docker

元記事を表示

【初心者向け】PHP の コンストラクタ について

こんにちは!
システム開発部の松木です。
今回は オブジェクト指向 の一つ、コンストラクタについて深く見ていこうと思います。

コンストラクタとは?

コンストラクタは、クラスをインスタンス化(オブジェクト化)した時に、必ず実行されるメソッドです。通常のメソッドはクラスをインスタンス化した後に、アロー演算子を用いて任意のタイミングで呼び出すことができるが、コンストラクタはインスタンス化するタイミングで、自動的に呼び出されるため呼び出す工程がありません。

▼ ブログ記事の詳細は コチラ から ▼

https://beyondjapan.com/blog/2023/01/php-constructor

***

■ 株式会社ビヨンド

・コーポレートサイト:https://beyondjapan.com​​​
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・Twitter:https://twit

元記事を表示

値の真偽の判定とfilter_var関数

`$_GET`に格納された値など、PHPには文字列でしか取得できない情報が存在します。
その値を真偽値として扱いたいときには`filter_var`関数が個人的に便利だったので、その他真偽値の判定にまつわる関数とともに出力結果をまとめました。

https://www.php.net/manual/ja/function.filter-var.php

例:
“`sample.php
$model = getData($_POST[“id”]);

$model->isPublished = filter_var($_POST(“isPublished”), FILTER_VALIDATE_BOOLEAN);
$model->save();
“`

## 早見表

| 値 | if($var) | isset($var) | empty($var) | is_null($var) | filter_var($val, FILTER_VALIDATE_BOOLEAN) |
|:-|:-:|:-:|:-:|:-:|:-:|
| true | **true** | **true** |

元記事を表示

PHPUnitのカバレッジバッジを作成する

# バッジを表示

https://gist.github.com/hellowork-mhlw/0a5d2e3a3121aefaf01a48b2b53c9ef3

“`markdown
![](https://coverage.deno.dev/hoge.svg)
“`

# バッジを更新
最後の数字を変更することで更新できます。`/hoge.svg`などのパスは好きなのいれてください
https://coverage.deno.dev/hoge.svg?97

# CI/CDに組み込む場合

“`bash
vendor/bin/phpunit –coverage-html reports
# for Laravel
# php artisan test –coverage-html reports

percentage=$(printf %.0f $(grep -Pom1 ‘(?<=aria-valuenow=").*?(?=")' reports/index.html)) curl https://coverage.deno.dev/hoge.svg?$percent

元記事を表示

$app->loadEnvironmentFrom(‘.env.example’);

https://github.com/laravel/framework/blob/0a18e9271c328fd86879a74487c4744cc2a6672d/src/Illuminate/Foundation/Application.php#L542

loadEnvironmentFromでenvをロードしてるわけではない。`.env`を上書きしてるだけ。`.env`とloadEnvironmentFrom()の引数の`.env`が両方ロードされることもない

“`bash
/**
* The environment file to load during bootstrapping.
*
* @var string
*/
protected $environmentFile = ‘.env’;

public function loadEnvironmentFrom($file)
{
$this->environmentFile = $file;

return $th

元記事を表示

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

今日はlpのテンプレート作成の続きを行った。テスト環境でデータベースから特定の情報を読み込み、その値を表示するという作業だった。そこで、データベースにもwordpressにもない値だった場合、データベースにはないが、wordpressにある場合、両方にある場合この3つの条件を設けてそれぞれに適切な値を入れる作業をした。まず、functionを作り、issetを使って値があるかを調べた。引数が多くなり、他の場所に引用することがめんどうになってしまった。そこで、先輩エンジニアからjsonを使ったら便利と言われた。jsonで配列をつくり、functionの引数にした。jsonを使えば容量も軽いし、別の場所に引用するのも簡単にできるとのことだった。自分はjsonを詳しく知らなかった。先輩エンジニアはweb開発の時はjsonをとても多く使うとのことだった。直接コードも見せていただき利便性を確かめることができた。今日隣で業務委託のエンジニアさんとのミーティングが聞こえてきた。社員のエンジニアさんは業務委託のエンジニアに難しそうなことを要求していた。レベルの高い話で、いずれかは自分もそのような話し合

元記事を表示

【PHPUnit】assertSameとassertEqualsを正しく使い分ける

## はじめに
今回の記事はassertSameとassertEqualsの使い分けについてです。何気なくassertSameを使用していて、意図しないエラーに遭遇したので、忘れないよう記事にします

## 状況と発生したエラー内容
今回のエラーは下記テストを実行した際に出力されました。ユーザーリポジトリのfindById(ユーザーIDを指定すると対象のユーザーを取得できるメソッド)のテストです。存在するユーザーIDを渡すとユーザーを1件取得できることを確認しています

また、`assertUser`メソッドでは、オブジェクトの属性値が期待するオブジェクトと、実際のオブジェクトで等しいかどうかを評価しています
“`php
public function test_存在するユーザーIDを渡すとユーザーを1件取得できること(): void
{
// given
$expectedUser = $this->user;

// when
$actualUser = $this->userRepository->

元記事を表示

プロキシ環境下でAWS SDK for PHPを利用してファイルのアップロード・ダウンロードを行いたい

クライアント作成時に `’http’ => [‘proxy’ => ‘http://192.168.16.1:10’]` を追加することで、プロキシ環境下でAWS SDK for PHPを利用したS3へのアクセスが可能となります。

“`php
require ‘vendor/autoload.php’;

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

$s3 = new \Aws\S3\S3Client([
‘resion’ => ‘ap-northeast-1’,
‘version’ => ‘latest’,
‘profile’ => ‘default’,
‘http’ => [‘proxy’ => ‘http://192.168.16.1:10’]
]);

“`

# 参考

↓の `proxy` を参照

https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/getting-started_basic-

元記事を表示

PHPの配列に関して簡単にまとめる

## PHPの配列とは
– 配列とは、変数に背番号のようなものを付けて拡張し、複数のデータを扱えるようにしたもの
– 配列はデータを「キー/値」のペアにしている
– 「キー/値」のペアになっているデータを配列の要素と言う
– 配列には順序があり要素が追加された順に並んでいる
– 配列にはすべてのデータ型の値を格納することが出来る

### 配列の基本的な書き方
基本形(リテラル)では1つの変数を定義して、その変数に対して値を代入する。
PHPの配列(Array)の場合は、わかりやすく言うとこの変数の値が複数格納できるものになる。

“`
$fruits = array(‘apple’, ‘orange’, ‘grape’);
“`
もしくは下記のような書き方もできる。
最近だとこちらの方が一般的か。
“`
$fruits = [‘apple’, ‘orange’, ‘grape’];
“`

### 配列の出力
出力する際は以下のように記述をします。
“`
$fruits = [‘apple’, ‘orange’, ‘grape’];

// var_dump の場合
var

元記事を表示

AWS SDK for PHPでS3からgzipファイルをそのまま(展開されることなく)取得したい

# はじめに

PHPでaws-sdkを使用してS3からファイルをダウンロードする際に、gzipファイルが展開された状態で出力される場合があります。
特に、gzipのままファイルが欲しい場合に困ってしまいます。

# 対応
クライアント作成時に `’http’ => [‘decode_content’ => false]` を追加することで、gzipファイルが展開されずに(gzipファイルのまま)取得することができます。

“`php
require ‘vendor/autoload.php’;

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

$s3 = new \Aws\S3\S3Client([
‘resion’ => ‘ap-northeast-1’,
‘version’ => ‘latest’,
‘profile’ => ‘default’,
‘http’ => [‘decode_content’ => false]
]);

“`

# 参考

↓の `decode_conte

元記事を表示

PHPでつぶやきアプリの作成

PHPで作成した「つぶやきアプリ」の紹介記事となります。

前回の「簡単な計算機アプリ」に比べ自分の中では難易度が爆上がりしました。というのも前回はHTML/PHPだけを使った簡単な実装でしたが、今回はHTML/CSS/PHPを用いてより機能的により実際のアプリを模倣したアプリになっています。

前回作成したアプリ

https://qiita.com/hiroo1120/private/094699597c7b21d7aae6

そして何よりDBの活用によるプログラムの幅の広がりや、セキュリティを意識したコードという点において未熟ながらも大変勉強になりました。

私自身、知

元記事を表示

PHPで電卓アプリの作成

PHPの勉強のためにPHPとHTMLで簡単な電卓アプリを作成してみました。
色々と不備があるかもしれませんがそこは何卒ご容赦ください。

目次

[1. アプリの作成](#アプリの作成)
・ [作成したアプリ](#作成したアプリ)
・ [完成イメージ](#完成イメージ)
・[画面側のコード](#画面側のコード)
・[画面側コード説明](#画面側コード説明)
 - [ディスプレイ表示](#ディスプレイ表示)
 - [hidden](#hidden)
 - [table](#table)
・ [処理プログラムのコード](#処理プログラムのコード)
・[処理プログラムの説明](#処理プログラムの説明)
 - [変数の定義](#変数の定義)
 - [関数の定義](#関数の定義)
 - [数字ボタンが押された時](#数字ボタンが押された時)
 - [四則演算以外の記号が押された時](#四則演算以外の記号が押された時)
 - [数字ボタンを押下後に記号ボタンかイコールを押下](#数字ボタンを押下後に記号ボタンかイコールを押下)

元記事を表示

Apacheを再起動したのにphp.iniの設定が反映されない

以前にも詰まったと思うけどまたやったので備忘。

“`php.ini“`の設定を変えたので反映させようと
“`
$ sudo systemctl restart httpd
“`
をやったのに“`phpinfo();“`で見たときに設定変更が反映されてない。
[以前](https://qiita.com/Kokusui/items/42ee26d7e8ad1a114b12)確認した際に、PHPがモジュール版でなくFPM/CGIで動いてたというのを思い出し、
“`
$ sudo systemctl restart php-fpm
“`
これで無事設定変更できた。ところでいつもやらかすのだが、
✕ “`sudo systemctrl restart httpd“`
◯ “`sudo systemctl restart httpd“`
「コマンドが見つかりません」と言われて気づくというね…。

元記事を表示

営業マンから人事に転身して思ったこと

初めまして!

開発会社で働く、ひよっこの人事です。

ひよっこっていうのは
社会人経験の中で、人事職に就くのは未だ半年経っていないためです笑

これから色々勉強のためにQiitaで
多くのエンジニアやプロジェクトに関わる人と繋がれたら良いなあと思い、ブログ初めてみました。

技術的なことは恥ずかしながら、ここに居る方よりも未熟なため
個人的にIT業界きて6ヶ月感じたことや思ったことをここに綴りながら、
客観的な会社の雰囲気を伝えていけたら良いなと考えております:writing_hand::relieved::dizzy:

それでは、ぜひこの記事が多くの方の目に留まってもらえるよう、書いていきたいと思います〜:fist:
宜しくお願いいたします。

元記事を表示

WordPressの更新で「ファイルをコピーできませんでした。」エラーが出る原因

# 発端
WordPressの更新で「ファイルをコピーできませんでした。」というエラーが出たので、オーナーかパーミッションだろうと高をくくって色々していたんですが一向にエラーが消えなくて小一時間ハマった話です。
![wp_error_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/9e61371e-2723-afaf-41f9-532e68b87bf6.png)
# 環境
CentOS7 + PHP7.4 + nginx + php-fpm
# 原因
何回もオーナーやパーミッションを変更してちょっと疲れ始めたときに、そもそもここで動いているPHPってちゃんとnginxオーナーで動いてるのか?と疑問を持ちました。

nginxのオーナー
“`/etc/nginx/nginx.conf
user nginx;
worker_processes auto;
“`

大丈夫ですね。

で、今回はPHPはPHP-FPMが動いているのでphp-fpmの方も見ます。

“`/etc/php-

元記事を表示

PHPバージョンアップについての覚書

PHPをXAMAPP上でバージョンアップするには
結局のところXAMPPをバージョンアップしないといけない

1) XAMPPサイトでダウンロード(Windows・Mac・Linuxの3バージョン)

https://www.apachefriends.org/jp/index.html

2)削除前にphp.iniの設定は保存しておく。(ほかのファイル名で)

3)元のXAMPPのフォルダで「uninstall…exe」というのがあるのでそれを実行するか
なければ、XAMPPから始まるファイルごと削除 (必要ならバックアップをしてください)

4)ダウンロードしたものを解凍して実行、ドライブ直下におく WindowsはCでもDでもOK

5) 終わったら、php.iniの設定を元のファイルの設定に戻す

6)私の環境の場合、COM関数が必要だったので、ないとエラーを起こす
 (Fatal error: Class COM not found in ~)
 =>詳しくはこちらを確認してください(ありがとうございます!)

https://b.0218.jp/20130110131

元記事を表示

OTHERカテゴリの最新記事