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

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

Chapter3 サービスとビューコンポーザ

# サービスとビューコンポーザ

## ビューコンポーザーとは

コントローラから呼び出されたビューテンプレートをレンダリングする際に、
自動的に実行される処理を用意するための部品。

## サービスとサービスプロバイダ

**サービス**:機能強化のための仕組み。
**サービスコンテナ**:DIと呼ばれる機能を使ったシステムでLarabelの仕組み。

**DI(Dependency Injection)**:依存性注入

**サービスプロバイダ**:
サービスを登録するために用意されている部品で、
必要に応じて特定のサービスを組み込んで使えるようにするためのもの。

## サービスプロバイダの基本形

サービスプロバイダは`ServiceProvider`というクラスを継承して作成されます。

“`ServiceProvider.php

元記事を表示

【PHP基礎⑧】if構文-3

[問題]
整数値を入力させ、値が正であればpositiveと表示するプログラムを作成しなさい。ただし0は正に含まないものとする。

# コード
“`php
$a = intval(fgets(STDIN));
if($a > 0){
echo ‘positive’;
}
“`

↓ 「2」と入力

# 結果
“`
positive

“`

元記事を表示

【PHP基礎⑦】if構文-2 否定の条件分岐

[問題]
整数値を入力させ、値が0ならばzero、0でない場合はnot zeroと表示するプログラムを作成しなさい。

# コード
“`php
$a = intval(fgets(STDIN));
if($a == 0){
echo ‘zero’;
}else{
echo ‘not zero’;
}
“`

↓ 「6」と入力

# 結果
“`
not zero
“`

☆否定の条件分岐
if(条件){
条件を満たす場合に行う処理;
}else{
条件を満たさない場合に行う処理;
}

元記事を表示

LaravelのPHPUnitでS3へのアップロードテスト

PHPUnitでファイルアップロードのテストを書いたのはいいけども忘れそうなので備忘録として。。

# 前提
filesistems.phpとか
.env.testingファイルなどは作成、設定済みとします。

# やりたいこと
APIでs3にファイルをアップロードして該当ファイルがあればOK、なければNGとするMiddlewareを実装したかった

# テストコード
“`
/**
* Middleware Check(OK)
* @return void
* @group upload_test
*/
public function middleware_upload_check_ok(): void
{
        //実際のs3ではなく仮のストレージを割り当てる
Storage::fake(‘s3’);
//対象ファイルがないことを確認
Storage::disk(‘s3’)->assertMissing(‘/maintenance_test/maintenance.txt’);

// ミドルウェアのチェックもしたいのでなんかしらA

元記事を表示

Windowsで開発したPHPをCentOSにデプロイしたときに起きやすいエラー

|[../](https://qiita.com/taconana/items/d382d08a83a2a67f3b6a) |
|—|

Windowsで開発したPHPをCentOS Stream 8環境にデプロイしたときに、いくつかエラーやワーニングが出ていたのでメモしておく。軽微な内容です。

## DBの接続先を切り替えておくこと

DBの接続情報が異なる場合、例えば、dbname,user,passwordが異なると、以下の感じのエラーになる。
“`
PHP Fatal error: Uncaught TypeError: Return value of common\\integration\\PersistenceBase::pdo()
must be an instance of PDO, null returned in /common/integration/PersistenceBase.php:45
“`
環境を判別して制御を切り替えるように記述しておくこと。
“`php
public static function isWindows() :

元記事を表示

CentOS Stream 8にPHP PDOのMySQLドライバをインストールする手順

|[../](https://qiita.com/taconana/items/d382d08a83a2a67f3b6a) |
|—|

CentOS Stream 8でMySQLをインストールし、PHPからアクセスを試みるが、PDOの接続で「could not find driver」のエラーが出た。
“`
could not find driver
Uncaught TypeError: Return value of PersistenceBase::pdo() must be an instance of PDO, null returned in …
“`
MySQLコンソールで接続できることは確認し、dsnやuser/passwordを間違えていないことは確認済み。
“`
// dsn = mysql:dbname=test;host=localhost;port=3306;charset=utf8
// user = root
// password = xxx

# mysql -uroot -p test
enter password: xxx
“`

元記事を表示

「オブジェクト指向による簡易版ブラックジャックゲームの実装(PHP)」のクラス図修正案

https://qiita.com/daitennn/items/19798b5a0613589ecaa8

上記記事のクラス図の誤記をコメントしようと思ったのですが、以前の指摘でブロックされてしまったようなので、記事にて修正案を書いておきます。

Qiitaのガイドラインにも書いてありますが、間違いなどをみんなで改善していきたいですね。

https://help.qiita.com/ja/articles/qiita-community-guideline

> ☝ 記事の価値はみんなで高めよう
> 読んでみて「この記事が役に立った!」と思ったら、LGTMやコメントなどでぜひその気持を伝えてください。 記事の中に間違いや追記すべき内容などがあれば、非難するのではなくみんなで改善をしていきましょう。Qiitaには編集リクエストなどの、記事をみんなで改善しあえる機能が備わっています。みんなでいまある記事の価値を高めましょう。

## クラス図修正案

* クラスの継承は親クラス側に三角形
* Card と BlackJackGame の依存の向きが逆
* 引数で渡すオブジェクトはコンポ

元記事を表示

PHP 列挙型(enum)と値に依存した列挙型(backed enum)

# 概要

– PHP8.1から追加された列挙型(enum)について定義方法や使い方をまとめてみた。

# 定義方法(backed enum)

– クラスのように定義する。
– 例えば「aaa」と「bbb」の2つの値をstr1、str2としてそれぞれ列挙したいとき下記のように定義する。
– 列挙型名: StrEnum

“`php
enum StrEnum: string
{
case str1 = ‘aaa’;
case str2 = ‘bbb’;
}
“`

# 列挙した値を呼び出す(backed enum)

– 下記のように記載することで値を呼び出す事ができる。

“`php
列挙型名::キー名->value
“`

– 今回のStrEnumの「aaa」を取得したい場合下記のように記載する。

“`php
enum StrEnum: string
{
case str1 = ‘aaa’;
case str2

元記事を表示

3-4 レイアウトの作成

## ベースレイアウトの作成

“`helloapp.php


@yield(‘tit;e’)