PHP関連のことを調べてみた2021年08月02日

PHP関連のことを調べてみた2021年08月02日
目次

TravisCIでLaravel用パッケージを複数のLaravelバージョンで自動テストする

# 概要
Testing Laravel Package Against Multiple Laravel Versions.
Laravel用のパッケージを開発する際に、Travisを利用して複数のLaravelバージョンでテストを回すための設定ファイル.travis.yml について。

(検索のワードが良くないのか、イマイチ日本語の情報が出てこなかったので残しておく。)

## 主要な目的
– Laravel用パッケージに対する自動テストをTravisで回す ※Laravel本体を使ったアプリケーションのテストではなく、パッケージのテストである点に注意
– php、Laravelの各バージョンを組み合わせてのテストを回す ※本稿ではPHP7.2~7.4、Laravel6~8を対象とする

## 結論
“`yaml
language: php
matrix:
include:
– php: ‘7.2’
env: ‘ORCHESTRA_VERSION=4.*’
– php: ‘7.2’
env: ‘ORCHESTRA_VER

元記事を表示

Could not open input file: composer.pharが出た場合の対処方法

macでcomposerインストール後にCakePHPのプロジェクトを作成しようとしてつまずいたのでメモ

“`
php composer.phar create-project –prefer-dist cakephp/app:4.* my_app_name
“`

を実行した場合に

“`
Could not open input file: composer.phar
“`

と表示されることがあります。
その場合は以下でプロジェクトを作成してみてください。

“`
composer create-project –prefer-dist cakephp/app:4.* my_app_name
“`

元記事を表示

PHP endroid / qr-codeを用いて、QRコードを表示

#はじめに
PHPライブラリである`endroid/qr-code`を用いて、webページに任意のQRコードを表示します。
https://github.com/endroid/qr-code

環境は、Mac、VSCodeです。

#流れ
①composerをインストール
②QRコードを表示
③html内の一部としてQRコードを表示する
④qr-code関連をqrcode.phpにまとめる

# composerをインストール
[こちらを参考](https://getcomposer.org/download/
)に下記のコマンドを入力します。下記は2021年8月時点での最新版のコマンド。

“`
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e

元記事を表示

【Laravel】よく使うリダイレクトのやり方2種類

>**HTTPリダイレクト**

>リダイレクトレスポンスは、Illuminate\Http\RedirectResponseクラスのインスタンスで、ユーザーを他のURLへリダイレクトするために必要なしっかりとしたヘッダを含んでいる必要があります。RedirectResponseインスタンスを生成する方法はいくつかあります。

引用:[HTTPリダイレクト
](https://readouble.com/laravel/6.x/ja/redirects.html?header=%25E3%2583%25AA%25E3%2583%2580%25E3%2582%25A4%25E3%2583%25AC%25E3%2582%25AF%25E3%2583%2588%25E3%2581%25AE%25E4%25BD%259C%25E6%2588%2590)

#結論
通常のリダイレクト:`redirect`ヘルパを使用する
前のページに戻るリダイレクト:`back`ヘルパを使用する

#1. redirectヘルパを使用する
Laravelでは`redirect`ヘルパ関数がグローバルに定義され

元記事を表示

rectorphp/rector deep dive ~PHPStanと併用しプロダクションのPHPアプリケーションを大規模リファクタリングする方法~

一般的なサービスでは、DI やフレームワークを使用していると思います。その場合、デフォルトの設定でRector を入れただけではコードの追跡が不完全で、期待通りにリファクタリングできません。しかし PHPStanと併用し設定をしっかり記述すれば、力を最大限引き出せます。

弁護士ドットコムでは、Yii1 のプロダクションコードに PHP 7.4 Typed Properties のルールを適用し、530 のクラス変数に型を付けました。その過程で調べたことをまとめました。

またLaravelを例にどのような設定が必要か紹介します。~~(Yii1は需要ないと思うので)~~

# 3 文まとめ

– Rector を使えば、とても簡単に PHP コードを自動リファクタリングできる
– Rector は内部で PHPStan を利用している
– 依存関係の複雑なプロジェクトでも、PHPStan の設定を読み込ませれば Rector で綺麗にリファクタリングできる

# Rectorとは?

https://github.com/rectorphp/rector

> Rector insta

元記事を表示

PHP で Zip ファイルをテンポラリディレクトリに展開する

## 概要
PHP で Zip ファイルをテンポラリディレクトリに展開して中身のファイルをごにょごにょするのが地味にめんどくさかったのでメモがてらまとめました。

## テンポラリディレクトリに展開先を用意する
Zip ファイルの展開先として一時的なディレクトリを使用したかったため`sys_get_temp_dir`メソッドを使いました。
`/tmp`など OS が指定する一時的なファイルの置き場所へのパスを取得することができます。
加えて`uniqid`メソッドで取得する一意な値をディレクトリ名とするようにしてみました。

“`php
$tmpDir = sys_get_temp_dir() . ‘/’ . uniqid();
mkdir($tmpDir); // ディレクトリを作成します
“`

このようにテンポラリディレクトリに展開するようにしておけば、展開後に処理が落ちてしまい削除が漏れしてしまった場合でも後で迷いなく削除することができます。
※OS によっては一定期間経つとテンポラリディレクトリのファイルが削除される設定になっているものもあるようです

## Zip フ

元記事を表示

2つの配列を1つのforeach処理でDBに格納する方法

#やりたかったこと
####WordテーブルとNoteテーブルのカラムにformから送られてきた値を格納。

Noteテーブルのカラム
・user_id
・title

Wordテーブルのカラム
・note_id
・question 
・answer

create.blade.php

“`

@csrf

タイトル

     //name = ‘question’だと最後の1個のデータしか渡せないがname=’question[]’とすることで配列にして全部の値をコントローラーに渡すことができる

Q.

A.

Q.CakePHP4_migrationでdatetimeカラムが追加できない

#まえがき
CakePHPのmigrationを利用した際に発生したエラーの対処法となります。

#バージョン
CakePHP4

#手順
・Usersテーブルにmigrationでcreatedカラムを追加する

“`php:20210801024646_ChangeUsers.php
public function change()
{
$table = $this->table(‘users’);
$table->addColumn(‘created’, ‘datetime’);
$table->update();
}
“`

※上記のmigrationファイルでmigrate実行するとエラーが発生
`bin\cake migrations migrate`

“`
PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: ‘0000-00-00 00:00:00’ for colu

元記事を表示

CakePHP4_migrationでカラム位置を変更したい

#まえがき
CakePHPのmigrationを利用してカラム位置の修正を行う手順を記載します。

#バージョン
CakePHP4

#手順
・Usersテーブルをmigrationで作成
`bin\cake bake migration CreateUsers login_id:string `
`bin\cake migrations migrate`

・Usersテーブル情報修正用のmigrationファイル生成
`bin\cake bake migration ChangeUsers`

“`php:20210801024646_ChangeUsers.php
$table = $this->table(‘users’);
$table->addColumn(‘loginId’, ‘string’, [
‘after’ => ‘id’
]);
$table->update();
“`

※上記のmigrationファイルでmigrate実行するとエラーが発生
`bin\cake migrations migrate`

“`
PDOException: S

元記事を表示

PHPの基本文法まとめ

PHPについて一通り学習して、今後また使う機会があるかもなので、備忘録として残しておきます。

#基本形

– phpを使う際は、``の間に記述していく。
– 文末にセミコロンをつける。

“`php:

“`

#変数に数字を足す

– 省略形を紹介

“`php:
// 変数xに1を代入
$x = 1;

// 四則演算の省略形
$x += 10;
$x -= 10;
$x *= 10;
$X /= 10;
$x %= 10;

// 値が1のときだけの省略形
$x ++;
$x –;
“`

#文字列の連結

– 文字列の連結は、ドット「.」を使う
– 「.=」で省略して書ける

“`php:
$name = ‘久保’;

echo ‘私の名前は’.$name.’です’;
// 結果: 私の名前は久保です

// 省略形
$name .= ‘建英’;
echo $name;
// 結果: 久保建英
“`

#変数展開

– `ダブルクォーテーションで文字列を囲んだときのみ`
– シン

元記事を表示

Laravelを用いてアプリを作る。

*本件はlaravelをインストールした状態から始める

#1.アプリのインストール
####1.アプリを作成する
“`php:ターミナル
composer create-project laravel/laravel アプリ名
“`
下記のように出たらOK
application keyはメモっとくのがいいらしいい

“`php:ターミナル実行結果
php artisan key generate〜
application key〜
“`
#### 2.サーバーを起動(確認)

“`php:ターミナル
/ディレクトリは作成したアプリ名/
oredayoore@MacBook-Air-5 作成したアプリ$ php artisan serve
“`
#### 3.URL入力

“`php:リンク
http://127.0.0.1:8000/
“`
→画面が出る!

#2.データベースを作成+設定する

#### 1.環境変数を設定する

“`php:アプリ名/.env
1.設定するデータベース名を記述(以下sqliteの場合)
DB_CONNECTION = sqlit

元記事を表示

【Laravel】一度設定したプロジェクト名を変更してみたら詰んだ話

#Laravelプロジェクトの名前を変更したい
個人開発等を進めていて後から『プロジェクト名変えたいないぁ』と思う機会がありました。本来であれば要件定義、詳細設計等の段階でしっかりと決めておくべき内容でしたが、個人で学習用に開発を進めている場合だったので変更することとしました。

今回の記事では一度作成してしまったLaravelプロジェクト名の変更方法と注意点をまとめていきます。

__本記事で対象となる方は以下の通りです__
・個人開発で進めていたが途中からプロジェクト名を変えたくなった。
・ポートフォリオ作成等で後からサービス名を変更する必要があった。
・プロジェクト名が気に食わない。

※僕自身まだ学習中のみであるため本記事によるエラーは自己責任でご対応ください。。。

##【結論】なるべくおすすめはしません
例えば、以下のように元々sampleという名前のプロジェクトからsample2に変更する場合、そのまま修正するとエラーになり全く動かなくなります。

“`
sample //変更前
sample2//変更後
“`

その場合、その旧名の新フォルダを削除し、名前を元に戻せ

元記事を表示

(Laravel)具体例付きでEloquentでリレーション先を見ながらデータ取得する操作の確認

# はじめに
#### 本記事作成の目的
私の同僚で過去に[クエリビルダ](https://readouble.com/laravel/6.x/ja/queries.html)でjoinを駆使する方法をメインに使用していたために[Eloquent](https://readouble.com/laravel/6.x/ja/eloquent.html)に慣れていないという方にもっとEloquentを使ってもらいたいという目的で作成しております。
複数テーブルを跨いだ処理について、クエリビルダでjoinを駆使して実装することもできますが、
Eloquentを使ってLaravelに任せてしまったほうが簡単だしバグも発生しづらいということを目の当たりにして記事作成を決意しました。
基本は[公式ドキュメント](https://readouble.com/laravel/)を見て状況に合った方法を確認するべきですが、まずはこの記事を理解の第一歩にしていただけると幸いです。

#### 注意
・想定する読者について
マイグレーションやモデルの作成等、Laravelの基本的な操作をある程度把握している

元記事を表示

laravel Class ‘ZipArchive’ not foundエラー

laravelでExcelにあるデータをインポートしようとしたら
「Class ‘ZipArchive’ not foundエラー」が出ました。

内容的には「ZipArchiveというクラスが無いです!」と言っています。

しかし、
どこにZipArchiveというクラスをインストールしたら良いのか?
などエラー解決に時間がかかったのでメモに残したいと思います。

![スクリーンショット 2021-08-01 10.19.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700700/b2f36930-1138-a65e-b9c3-8c9dea32d0fd.png)

#開発環境
MacOSにLinuxの環境を作り、
Dockerを立ててlaravelを動かしている感じです。
![スクリーンショット 2021-08-01 10.34.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700700/43ad707d

元記事を表示

PHPを使ったサーバ証明書周り処理のメモ

職場で管理しているサーバ証明書の関連手続きを効率化するということで、久々のPHPで管理ツールを作りまして。
なかなか1ヶ所にまとめた情報がなかったので、その時のメモ。

***
**1.秘密鍵文字列の取得**

“`
$opt = array(
“private_key_bits” => 2048,
“private_key_type” => OPENSSL_KEYTYPE_RSA
);
$pkey = openssl_pkey_new($opt);
openssl_pkey_export($pkey, $private_key); // $private_keyに格納される
“`
***
**2.CSR文字列の取得**
1.で取得した秘密鍵のリソース”$pkey”を使います。

“`
$dn = array(
“countryName” => $country,
“stateOrProvinceName” => $state_of_province,
“localityName” => $locality,
“organizationName”

元記事を表示

[laravel 8.52]shiftとpopの関数が複数のアイテムを返せるように!

# 概念

今までlaravelのコレクションの`pop()`と`shift()`が一つのアイテムだけを削除し、返すことでしたが、Laravel8.52に含まれている[このPR](https://github.com/laravel/framework/pull/38093)では、引数が受け取れるようになって、複数のアイテムを返すようになりました。

# 使い方

## 基本
返したいレコード数を`pop()`か`shift()`に引数として渡すと、そのレコード数がコレクションから削除され、新しいコレクションとして返されます。いずれの関数のデフォルト引数値が`1`ですので、引数を定義しない場合には、今までと同じように1アイテムがコレクションから削除され、返されます。

“`php

$collect = collect([
‘Craig’,
‘is’,
‘very’,
‘handsome!’
]);

// 最後の二つのアイテムを削除し、新しいコレクションとして返す
$colle

元記事を表示

【Laravel】Aush認証のリンクで404エラー

LaravelでAuth認証を導入した際に、ログインページへのリンクで404エラーになってしまいました。
解決までの道筋を載せます。

環境

MAMP
OS:macOS
Laravel:8.51.0
PHP:7.4.12
MySQL:5.7.32

エラー

ログインしていたら「設定」「ログアウト」のボタンを表示、もしログインしていない場合は「ログイン」と「新規登録」に飛ぶ。
ログインは”/login”というアドレスで、新規登録は”/register”というアドレスに飛ぶが、このように表記しても404エラーになる。

“`html:index.blade.php
@if (Auth::check())

USER: {{$user->name}}

設定
ログアウト
@else

ログインしていません

元記事を表示

高卒ド文系女子がポートフォリオ作りました。

Web制作の勉強をするにあたり、制作が一番の学習と聞き、ひとまず自身のポートフォリオサイトを作ってみました。
後々の備忘録として、記録します。

高卒ド文系女子
Web制作初心者が作ったポートフォリオサイト
https://www.hironaoemi.com/

女子っていうかもう子持ちのアラサーなんですけど。ごめんなさい(笑)

#設計
まずはコンテンツの中身をどうするか。
いろんな方のポートフォリオサイトを参考にして、
プロフィール・スキル・成果物(今後更新)・コンタクトフォーム
を、入れようと思いました。
あとはデザインをざっくり決めてコーディングにかかります。
とりあえず、ペラ1で。ページ内リンクにしていこうかな。

#制作
ローカルでの開発環境はMAMPを使用しました。
外観はブートストラップを利用して、作っていきます。
普段はSCSSで作っていましたがブートストラップも触ってみようということで。
クラス指定をいれていくだけで、レスポンシブ対応のデザインができて便利でした。
おもしろいな、Bootstrap。

スキルは画像一枚でパッと伝わればいいなと思い、イラストレータ

元記事を表示

vscodeでdockerに接続してxdebugでphpデバッグ

# 概要
VSCodeからdockerコンテナに接続してxdebugでphpデバッグする方法。
できてみたら簡単だったんだけど道を間違えて大はまりしたので残しておきます。

# 対象環境
VSCode on Windows
WSL2 + Docker Desktop、またはvagrant + docker

# 前提
– dockerコンテナでphpプログラムが動いてること
– phpにxdebugが入ってること

もしphpのコンテナにxdebugが入ってない場合は、Dockerfileに

“`dockerfile
RUN pecl install xdebug && docker-php-ext-enable xdebug
“`

とか付け足せばいけると思います。

# 予防線
VSCode初心者なので変な事してるかもしれません。

# 手順

## 1. php.iniの設定

### 概要
xdebugの設定をします。
vscodeでコンテナに接続してのデバッグなので、client_hostは127.0.0.1です。

### 手順
コンテナ内のphp.iniの `[xd

元記事を表示

【PHP】array_key_existsの使い方

‘PHP’,
12 => ‘Java’,
23 => ‘JavaScript’,
33 => ‘Ruby’
];

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

if ( array_key_exists(’23’, $rows) ) {
echo “配列内にMikeというキーは存在します\n”;
}

$end = hrtime(true);
echo ‘処理時間:’.($end – $start).’ナノ秒’;

?>

元記事を表示

OTHERカテゴリの最新記事