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

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

Laravel Larastan のインストール

## Larastan

https://github.com/nunomaduro/larastan

LarastanはLaravel用のPHPStanのラッパーライブラリです。

## 環境

– PHP: 8.1.5
– Laravel: 9.12.2
– Larastan: 2.1.6

## インストール

“`shell-session
$ composer require nunomaduro/larastan –dev
“`

設定ファイルを作成します。

“`shell-session
$ touch phpstan.neon
“`

“`phpstan.neon
includes:
– ./vendor/nunomaduro/larastan/extension.neon

parameters:
paths:
– app
level: 6
“`

## Larastan 実行

“`shell-session
$ ./vendor/bin/phpstan analyse
“`

## GitHub Actions

“`.

元記事を表示

PHPの設定について

## はじめに

PHPの設定について、記事にしてみました。

## 設定の確認

設定は、phpinfoメソッド([詳細](https://www.php.net/manual/ja/function.phpinfo.php))で確認できます。
phpinfoメソッドはWebサーバー上で実行された場合はHTMLを出力し、CLIで実行された場合はプレーンテキストを出力するため、今回はWebサーバーを起動して設定の確認を行います。

### 1. Webサーバーの起動

“`php
php -S localhost:80
“`

### 2. 実行ファイルの作成

まず、Webサーバーを起動したフォルダにindex.phpを作成します。
次にindex.phpにphpinfoメソッドを記載します。

“`php

元記事を表示

[Laravel6] ざっくりSeederを使う

### ターミナル

“`php
php artisan make:seeder 〇〇
“`

– database\seeds\〇〇が作成される

### Seeds

“`php
public function run()
{
DB::table(‘users’)->insert([
‘name’ => Str::random(10),
‘email’ => Str::random(10) . ‘@gmail.com’,
‘password’ => Hash::make(‘password’),
]);
}
“`

### DatebaseSeeder

“`php
public function run()
{
$this->call(UsersTableSeeder::class);
}
“`

– DBSeederは必ず存在している+作成したSeederが最初はコメントアウトされている
– ここから個々のS

元記事を表示

CakePHPでヘルパーをコントローラで使う

# 意外と見つけるのが大変だった。

システム全体をSPAへの置き換え時にありがちな、ヘルパーの処理をコントローラに移行したいという状況が発生したのでメモ

(追記) コメントがあり、レジストリを用いる方法の方が良さそうなので、記事の内容を変えました。

MyHelperを利用する場合。
“`php
use Cake\View\View;
use Cake\View\HelperRegistry;

// ヘルパーを使うおまじない
$HelperRegistry = new HelperRegistry(new View());
$this->MyHelper = $HelperRegistry->load(‘My’);
$fuga = $this->MyHelper->hoge()
“`

直接呼び出す方法。

“`php
use Cake\View\View;
use App\View\Helper\MyHelper;

// ヘルパーを使うおまじない
$this->MyHelper = new MyHelper(new View());
$fug

元記事を表示

TDLのアトラクション巡りを遺伝的アルゴリズムで最適化してみた

# はじめに
なにか個人開発できないかなとアイデアを探していたときに遺伝的アルゴリズム(GA)に出会いました。

GAとは教師なし機械学習の1つで
>進化論的な考え方に基づいてデータを操作し、最適解探索や学習、推論を行う手法です。
http://www.iba.t.u-tokyo.ac.jp/rs/ga.html

このアルゴリズムは巡回セールスマン問題や膨大に組み合わせがあり全探索が不可能な場合において有効な手法です。
そこでふと思いついたのがディズニーのアトラクションを効率よく回る方法を導き出せないか?でした。このアルゴリズムは巡回セールスマン問題や膨大に組み合わせがあり全探索が不可能な場合において有効です。
そこでふと思いついたのがディズニーのアトラクションを効率よく回る方法を導き出せないか?です。複数の地点を効率よく回る点において巡回セールスマン問題と共通しているため、学習ついでに応用できないかと考えました。

# サービス紹介
公開したwebアプリのURLは[こちら](http://www.gadisney.shop/)です。
実際に使ってみて感想等教えて頂けるとありがたい

元記事を表示

PG見聞録 ~PHP編 配列関数1~

ということで文字列操作はいったん終わり、配列関数について掘り下げていきます。
とりあえず第1弾の関数をまとめてみました。

“`php

元記事を表示

stechstudio/laravel-zipstreamでファイル名に日本語を使えるようにする。

stechstudio/laravel-zipstream(v4.8)でファイル名に日本語を使えるようにする方法について記載。

stechstudio/laravel-zipstreamdeを使ってzipファイル保存するとファイル名に日本語が入っている場合、日本語名が消える。


1_日本語file.pdf

1_file.pdf

以下のファイルを確認すると、ここでStr::asciiで文字コードをASCIIに変換しているので、日本語が消えている模様。
vendor\\stechstudio\\laravel-zipstream\\src\\Models\\File.php

“`

    /**
* @return string
*/
public function getZipPath(): string
{
$path = ltrim(preg_replace(‘|/{2,}|’, ‘/’, $this->zipPath), ‘/’);

return config(‘zipstream.fi

元記事を表示

PG見聞録 ~PHP編 メール送信~

技術書をペラペラと見てたらメール送信のための関数があって面白いなあと思って読んでみました。
こんな時間に読んだことを後悔しつつも書いております(笑)
日本語でメールを送る場合もmbを付けるというのは変わらんようです。
もしmbなしの場合は文字エンコードの変換を自前で設定すればいいようですが、mb推奨とのこと。

mb_send_mail関数

引数に渡す変数の構成としては誰しも使ったことのあるメールの中身ですね。
LINEしか使ったことないからわかんないなんて言わないでください。

“`php
// メールの構成情報を設定
$to = ‘example@example.com’;
$subject = ‘test mail’;
$body = ‘Hello!this is test mail\n Howdy?’;
$headers = [
‘From’ => ‘test@test.com’,
‘Cc’ => ‘user01@example.com’,
‘X-Mailer’ =

元記事を表示

ライブ会場の座席検索サービス

今回、ポートフォリオとして**ライブ会場の座席検索サービス**を作ったので、少し解説します。

# 目次

[1.作った経緯](#1-作った経緯)
[2.実際のページ](#2-実際のページ)
[3.使用技術](#3-使用技術)
[4.工夫した点](#4-工夫した点)
[5.苦労した点](#5-苦労した点)
[6.これからの課題](#6-これからの課題)

# 1. 作った経緯

僕はよくアーティストのライブに行くのですが、チケットの席番号を見て毎回思うことがありまして、**「自分の席の位置がよくわからない」** ということです。

**特にスタンド席などは、会場全体を囲むように色々な方向に席があり、なおかつ 2階,3階とフロアも分かれているので、会場内で迷ってしまうこともあると思います。**

そんな悩みを解決するために今回作ったのが、**ライブ会場の座席検索サービス**です。
意外とありそうで無いサービスだったので、**だったら作ってしまおう!!** ということで作ってみました。

# 2. 実際のページ

[ライブ座席検索](http://www.search-venue-seat

元記事を表示

PG見聞録 ~PHP編 文字列操作関数2~

引き続き文字列の操作について深堀していきます。
動物の名前は飼ってる犬と知り合いの猫と実家の猫です。

explode,mb_strpos,str_contains

“`php

元記事を表示

Eloquent のイベントをインスタンスメソッドに

## クロージャを使用したイベント定義

Eloquent モデルにイベントを直接記述する手段として、Laravel ドキュメントには「クロージャの使用」として例示されている。

“`php

元記事を表示

オリジナルアプリ作成を通して

オリジナルアプリ作成を通しての進捗や心境をお伝えします。

# オリジナルアプリ概要
プロ野球チーム(DeNA)の選手の成績表示アプリ(通算型)
## アプリの動作
①プロ野球サイト(ヤフー)からチーム情報を取得(スクレイピング)
②取得したデータをデータベースに保存後、トップページに選手一覧を表示させる。(seederを使用)
③選手一覧画面から投手・打者別の画面に遷移
## 情報更新
情報は固定ではないので(日々更新)、herokuでアプリが落ちないように設定。(今後実装)
## 成績
成績については、すべて計算式で指定。
## ユーザー操作
特に、ユーザー登録などのページは作る予定はなく、誰でも見ることが出来るようにする。

# 心境
seederの記述が分からず、迷っています。あとは後に必要になるスクレイピングの記述も今のところ考えていないので、スクールの講師の人と一緒に考えていくつもりです。

元記事を表示

PHPには0とfalseを返す標準関数がある

## はじめに
PHPでは、値の比較をする場合は下記の比較演算子を使うことが多いと思います。
この書き方では**正しい処理ができない標準関数**があります。
“`php:sample.php
$a == true;
test() != false;
!test()
“`

## 注意点
PHPの関数には、**エラーが発生した場合**に`false`を返すケース
処理に該当しない場合に`0`を返すパターンがあります。
この場合の比較には、`===`演算子を活用しましょう。

> [**preg_match**](https://www.php.net/manual/ja/function.preg-match.php)
> (PHP 4, PHP 5, PHP 7, PHP 8)
>
>preg_match() は、pattern が指定した subject に**マッチした場合に1**を返します。
**マッチしなかった場合は 0** を返します。 **失敗した場合にfalse**を返します
>
> **警告**
> この関数は論理値 false を返す可能性がありますが、fal

元記事を表示

PG見聞録 ~PHP編 文字列関数1~

どうでもいいですけどphpって大文字か小文字どっちなんでしょう。
ということで文字列を操作する関数をいくつか書いていきます!

文字列関数その1

文字列を操作する関数だけでも多々あります。
文字列の長さや数を数えたり、バイト数を数えたり
大文字小文字に変換したり、検索したり、置き換えたりもできます
文字に関してはデジタルデータになると少しややこしいところがありまして
半角英数字は1バイト、日本語は全角なので2バイトになります
さらにはUTF-8やJISコードなど文字コードでもバイト数の数え方が変わってきます。

“`php

元記事を表示

PG見聞録 ~php編 組み込み関数~

関数とは…

今日から主な学習テーマとして関数について深堀していこうと思います。
PHPの組み込み関数(ビルトイン関数や内部関数ともいう)、ユーザー定義関数ですね。

まずは「関数とは」ということですが
”何かしらの入力(パラメータ)を与え、予め決められた処理を行い結果を返す仕組みのこと。
パーツがパラメータ、組み立てる仕組みが関数、返ってきた結果が車みたいな感じですね。
ベルトコンベアでういーんてパーツが運ばれて機械に入っていって組み立てて車が完成するみたいな流れを想像すると分かりやすいでしょうか。
この時のパーツを引数、車を戻り値といいます。
PHPではもともといろんな関数が用意されてますね。
var_dump,print_r,defineなどなど、多くの機能が関数として用意されており、それらを呼びだすだけでプログラムが書けちゃいます。
この直感的に書けちゃうところがPHPの人気の理由の一つでしょうか。賛否ありますが自分は好きです。ちなみにifやforなどは制御構文といって関数ではないです。

元記事を表示

【Laravel】クエリビルダ/whereIn/whereHasを使った情報取得

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## リレーション先の条件での絞り込み

organization -> user -> post
(->は1対多の関係)

同じ“`organization“`に所属する“`user“`の“`post“`一覧を最新順に表示したい。

### 書き方①

“`php
$orgUsersIds = User::where(‘organization_id’, $user->organization_id)
->with(‘organization’)
->pluck(‘id’)
->toArray();
Post::whereIn(‘user_id’, $orgUsersIds)
->latest();
->paginate(25);
“`

“`SQL
array:3 [
0 => array:3 [
“query”

元記事を表示

【Laravel】socialiteとsanctumを使った新規登録・ログイン機能

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 新規登録・ログインの流れ
Slackに近い新規登録・ログイン機能の実装をやりたかった。

“`
Googleアカウントでログイン
(未登録の場合)
->Googleアカウントの名前とメールアドレスで自動的に新規登録される
->トークンが発行される
->ログイン

(登録済みの場合)
->トークンが発行される
->ログイン
“`

## 実装

“`/auth/google/redirect“`にアクセスしたら“`/auth/google/callback“`にリダイレクトされる。

“`routes/web.php
Route::get(‘/auth/google/redirect’, function () {
return Socialite::driver(‘google’)->redirect();
});

Route::controller(OAuthController::class)->group(function() {
Route::get(‘/auth/google

元記事を表示

Bootstrap 基礎知識・基礎コード

## 本記事の内容
Bootstapについて最低限の理解を得るために必要な知識、および簡単なコード例を記載します

なお、各リンクは以下の公式ドキュメント該当箇所につなげているので、ぜひそちらも参考にしてください

https://getbootstrap.jp/

## 基礎コード

### 両端に余白を作り要素を中央にまとめる

“`html

“`

### 要素を両端に配置する

“`html

~~~
~~~~

“`

– class属性が付与できるものであればなんでもいい(formタグとか)
– class=”row”の中にclass=”col~~”を記述することは絶対条件

### グリッドを用いた中央寄せ

“`html

“`

– まず

元記事を表示

PHP 文字列検索 str_starts_with()

# 概要

– PHPの文字列検索組み込み関数のstr_starts_with()を簡単にまとめる。

# 前提

– 筆者は下記を用いて動作確認を行った。
– [https://paiza.io/ja](https://paiza.io/ja)

# 組み込み関数 str_starts_with()

– 公式ドキュメント
– [str_starts_with](https://www.php.net/manual/ja/function.str-starts-with.php)
– 検索対象文字列の最初に検索文字列が存在するかの確認
– 戻り値
– 検索対象文字列内の最初に検索文字列が存在する: trueを返却
– 検索対象文字列内の最初に検索文字列が存在しない: falseを返却
– 例

“`php
str_starts_with(検索対象文字列, 検索文字列);
“`

– 実例(trueになる例)

“`php

元記事を表示

【Laravel】認証系ライブラリの簡単まとめ

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## はじめに
Laravelでログイン機能やトークン認証をやろうとした際にそれぞれの違いがよく分からず、どれを使えばいいのか混乱したので簡単にまとめる。
(Laravelは標準で認証系のライブラリが揃ってるのがすごい。)
元々Railsをやってたので、Railsでいうとこれなんじゃないかと思うものも挙げてみた。

## socialite

– ソーシャルログイン(Googleログインetc)を簡単に実装できる
– 外部サービスのアクセストークン発行とかをやってくれる
– Railsでいう“`OmniAuth“`
https://github.com/omniauth/omniauth

https://readouble.com/laravel/9.x/ja/socialite.html

## sanctum

– APIトークンをユーザーに発行し、トークン認証をする
– Railsでいう“`devise-token-auth“`
https://github.com/lynndylanhurley/d

元記事を表示

OTHERカテゴリの最新記事