PHP関連のことを調べてみた2020年09月27日

PHP関連のことを調べてみた2020年09月27日

【Laravel】Collectionのrejectメソッド

##はじめに
今回もLaravelのCollectionのメソッドについてまとめたいと思います。

##rejectメソッドで条件に合わないものを除外してデータ取得する

Collectionの中から条件に合わないものを除外してデータ取得することができます。

“`php:
$collection = collect([
[‘id’ => 1, ‘name’ => ‘山田’, ‘age’ => 18],
[‘id’ => 2, ‘name’ => ‘佐藤’, ‘age’ => 38],
[‘id’ => 3, ‘name’ => ‘小林’, ‘age’ => 25],
[‘id’ => 4, ‘name’ => ‘鈴木’, ‘age’ => 34],
[‘id’ => 5, ‘name’ => ‘田中’, ‘age’ => 29],
]);

$filtered = $collection->reject(function($values, $key){

return ($values[‘age’] < 30); }); print

元記事を表示

PHP Laravel 6 画像のアップロード

#フォームの作成

##フォームタグの記述
formタグに “`enctype=’multipart/form-data’“` を記述しないとエラーを吐きます。
これを記述することで複数類(jpeg、png等)のデータ形式を扱う事でできるようになります。(jpeg、png等)

“`create.blade.php

@csrf

“`

##コントローラーの設定
imgがない場合に“`$path = $request->file(‘img’)->store(‘public/img’);“`でエラーを吐くためif文で分岐させました。

“`recommendMovies/app/Http/Controllers/RecommendMovieController.php
public function store(Request $request)
{
if

元記事を表示

php復習、オブジェクト指向編(個人学習備忘録)

##はじめに
筆者はずぶずぶの素人です。少しlaravelが書けるレベルです。
書けているけど僕自身がフレームワークに使われています。
laravelを使っていく打ちにもっとlaravelを理解したいと思いました。
フレームワークの本質を理解するにはphpを基礎力を向上させるほかないと考えphpの復習+脱初心者を目指します。
###class
オブジェクト指向の構成要素の1つ。classはオブジェクトの設計書のようなもの
userの名前をコンストラクトし、user名を出力する簡単なクラスを作成

“`
class Animal {
p $name;

//$user_nameの初期化
function __construct($name) {
$this->name = $name;
}
//getterの役割
public function getName() {
return $this->name;
}
}
$nnimal = new Animal(‘dog’);
echo $us

元記事を表示

PHPのTCPDF + FPDIでPDFを出力してみた話

# はじめに
タイトルの通りですが
**TCPDF**と**FPDI**のライブラリを使用して、PDFを出力してみました。
今回はコマンドラインから実行してみます。

# 本編
## 環境構築
お好みでPHP、Composerが使用できる環境を用意してください。

### Docker
今回私が使用したDocker環境は以下です(一部割愛)。

“`yml:./docker-compose.yml
version: ‘3’
services:
php:
build: ./php
volumes:
– ./work:/home/work
“`
“`dockerfile:./php/dockerfile
FROM php:7.3-fpm
COPY php.ini /usr/local/etc/php/

# Composer
RUN php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);” \
&& php -r “if (hash_file(‘sha384’, ‘c

元記事を表示

PHPUnit assertEquals アサーションについて

# 目的

– PHPUnitのアサーションの1つであるassertEqualsについてかんたんにまとめる

# すみません

– 本記事は筆者の備忘録的要素が強いためメモ的な簡易的な記事となる。
– 内容が薄い場合は参考文献先などを参考に各自て補填していただければ幸いである。

# assertEquals

– 検査対象の中に指定された文字列が含まれているかをチェックするアサーションである。
– 具体例を下記に記載する。

“`php
assertEquals(‘A’, ‘B’);
“`
– 上記のようにテストコードが記載された場合、指定された文字列がAで検査対象がBとなる。
– 先の説明でAが指定文字列、Bが検査対象としたがAとBが一致しているかを検査するアサーションなので実際には順不同である。
– もう少し具体的な例を下記に記載する。
– `$str`には「hello」の文字列が格納されている。

“`php
$str = ‘hello’;
“`
– `$str`に「hello」とい

元記事を表示

PHP連想配列のキーとバリューを組み替える方法

DBから取ってきたデータをビューに渡す時に、中の要素でキーとバリューの組み合わせを作って新しい連想配列を作りたい場面があったのですが、色々調べてもどれもしっくりこなかったので、本記事を書いてみました。

例えば、下記のような都道府県と市区町村がセットになっているデータがあったとして、

“`
$area_list = [
[‘prefecture’ => ‘東京都’, ‘city’ => ‘新宿’],
[‘prefecture’ => ‘東京都’, ‘city’ => ‘渋谷’],
[‘prefecture’ => ‘東京都’, ‘city’ => ‘原宿’],
[‘prefecture’ => ‘大阪府’, ‘city’ => ‘難波’],
[‘prefecture’ => ‘大阪府’, ‘city’ => ‘梅田’],
[‘prefecture’ => ‘大阪府’, ‘city’ => ‘京橋’],
[‘prefecture’ => ‘愛知県’, ‘city’ =>

元記事を表示

LaravelのFactoryで連続した日付データの挿入

####Laravelのseederやらfactoryについて勉強中、連続した日付データの挿入に苦戦したので備忘録

schedule_table

|id|title|schedule_day|
|———–:|————:|————:|
|1|aaa|2020-09-27|
|2|bbb|2020-09-28|
|3|ccc|2020-09-29|
|4|ddd|2020-09-30|
|5|eee|2020-10-01|

↑こんな感じで日付が連続したテストデータが欲しかった

実行するシーダーファイルを記述

“`php:DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call([
UserSeeder::class,
ScheduleSeeder::class

元記事を表示

PHP Laravel 6 おすすめ映画投稿サイト作成過程 9:リレーション編

#リレーションの定義

##リレーション3パターン

###1対1
一つのモデルが一つのモデルと関係を持つタイプです。

###1対多
一つのモデルが多くのモデルを持つタイプです。

###多対多
三つ以上のモデルが存在し、それぞれが関係を持つタイプです。

##多対多で、タグをボタン選択式にして実装
今回のタグ付けには、多対多を使用します。
まず、recommendsテーブルとtagsテーブルを関連付けるためのrecommend_tagテーブルを作成します。

“`
$ php artisan make:migration create_recommend_tag_table
“`

次に、作成した create_recommend_tag_table を以下の内容に編集します。

“`recommend/database/migrations/2020_09_26_103413_create_recommend_tag_table.php
public function up()
{
Schema::create(‘recommend_tag

元記事を表示

Laravelとは+導入方法

今回はphpのフレームワークの中で最もポピュラーであるLaravelという物を紹介していきたいと思います。

#フレームワークとは
そもそもフレームワークとはなんだろうと思われる方もいらっしゃると思いますので、まずフレームワークの説明をしていきたいと思います。

フレームワークとは概念的な意味で言うと「枠組み」と言う意味合いをもっています。あるいは、システム開発を楽に行えるようになるプログラムや雛形のことを意味します。このフレームワークを使う事により、開発時間の短縮化、複数人で開発を行う際にコードの統一化を図ることができ、効率的に開発を進めていく事ができます。
下記はphpのフレームワークと簡単な特徴を紹介します。

###1.Laravel
世界で人気のフレームワーク
2020年現在、国内において主流のPHPフレームワークであり日本語のドキュメントも充実しています。
###2.Cakephp 
日本では最も利用されてきたPHPフレームワーク
R

元記事を表示

巨大な桁の足し算

### 1.問題
2つの巨大な桁数(ただし2つの数字の桁数は同じ)の足し算を実行する処理を考える。

### 2.4桁同士の足し算例

巨大な桁数というテーマだったため、下記のように各桁構成が
わかるように図示していく。
PCの性能の許す限り、桁数の制限なく整数として加算できる言語もある(python)が,
そうでない言語の場合は下記のように考えていく必要がある。

  9999
+9998
————-
19997

3桁目までの文字列は前の桁の繰り上がり数と、各桁の足し算の1桁目で構成される事がわかる。
4桁目の足し算では、3桁目の繰り上がり+4桁同士の足し算の結果を3桁目までの文字列と連結すれば
いい事がわかる。

### 3.コード例(Python:文字列処理をしたもの)

“`python

#2つの数字の入力
in1=input()
in2=input()
#入力文字列の長さ
len1=len(in1)
#出力結果文字列
str1=”
#前の桁の繰り上がり状態0:繰り上がりなし 1:繰り上がりあり
p_fugo=0

for i in range(len1):

元記事を表示

【ポエム】Laravelのバリデーションルールの指定方法について考える

今回は **ポエム** です。技術的には全然高度なお話ではなく、ただ、気持ち悪かったのをどうにかしたかったというお話です。ポエムが苦手な方は「戻る」ボタンを押すことをオススメします。

# 前提

– PHP 7.4.9
– Laravel 8.5.0

# 3行でわかるまとめ

Laravel のバリデーションルールの指定方法が気持ち悪い(とくにクラス定数を使ったとき)。
いろいろ試してみたが、気持ち悪さを解消できなかった。
自作パッケージを作って、ようやく気持ち悪さを解消できた。

# クラス定数問題

Laravel では、バリデーションルールは **文字列** で指定します。例えば、 `title` 属性に「必須入力であること」と「1000文字以下であること」というルールを指定する場合は、次のように書きます。

“`php
$request->validate([
‘title’ => ‘required|max:1000’,
]);
“`

`|` で区切らずに **配列** で指定することもできます。

“`php
$request->validate([

元記事を表示

PHPUnit assertStringContainsString アサーションについて

# 目的

– PHPUnitのアサーションの1つであるassertStringContainsStringについてかんたんにまとめる

# すみません

– 本記事は筆者の備忘録的要素が強いためメモ的な簡易的な記事となる。
– 内容が薄い場合は参考文献先などを参考に各自て補填していただければ幸いである。

# assertStringContainsString

– 検査対象の中に指定された文字列が含まれているかをチェックするアサーションである。
– 具体例を下記に記載する。

“`php
assertStringContainsString(‘A’, ‘B’);
“`
– 上記のようにテストコードが記載された場合、指定された文字列がAで検査対象がBとなる。
– もう少しざっくりとしたコードを日本語を交えて記載する。

“`php
assertStringContainsString(‘検査対象に入っていることが期待されている指定された文字列’, ‘検査対象の文字列や変数’)
“`
– もう少し具体的な例を下記に記載する。

元記事を表示

[Laravel] 特定のマイグレーションだけをマイグレート、ロールバックしたい!!!

#初めに
入社してから与えられた課題で、特定のマイグレーション以外をロールバックして、修正、特定のマイグレーション以外を再び実行するという操作をしたくなったのですが、なかなか情報が見つからず、たくさんのサイトを見て得た情報と最終的に見つけた自己流の解決策を紹介します。
#マイグレーションは連続的なものであるという前提
いざというときにLaravelがデータを安全にロールバックできるようにするための仕組みがマイグレーションというものらしいです。
だから、マイグレーションはそれらが作成された順にひとつずつ実行しています。

この前提から特定のマイグレーションだけを実行することは邪道なのではという疑念を抱きつつ、解決策へ、、、

#解決策
###特定のマイグレーションだけをマイグレートする
`php artisan migrate:refresh`を応用して使います。

##### マイグレーションを指定したファイルから1つだけマイグレートする
“`
php artisan migrate:refresh –step=1 –path=/database/migrations/ファイル

元記事を表示

PHPUnitで始めるユニットテスト

#目次
[ユニットテストとは](#ユニットテストとは)
[インストール方法](#インストール方法)
[簡単なテストコードの書き方と実行方法](#簡単なテストコードの書き方と実行方法)
[テスト結果の確認方法](#テスト結果の確認方法)
[複数データのテスト](#複数データのテスト)
[プライベートメソッドのテスト](#プライベートメソッドのテスト)

#ユニットテストとは
プログラムの小さな機能単位に対して行う動作確認のこと
ある操作を行った時に結果がどうなるかを
順々に試していく作業を自動化するためにある

#インストール方法
“composer“はインストールされている前提で進めていきます。
インストールしてない方はインストールしてから戻ってきてください
これは推奨されていないやり方ですが、

“`php
composer global require ‘phpunit/phpunit:*’
echo “export PATH=\$PATH:\$HOME/.config/composer/vendor/bin” >> ~/.bash_profile
source ~/.bas

元記事を表示

アリババクラウドECSへのWP-CLIのインストールと正しい権限とユーザーロールの準備

この3部構成のチュートリアルでは、WP-CLIを使用してWordPressの高度な管理を設定する方法を説明します。パート1では、**アリババクラウドECS**上でのWP-CLIの設定に焦点を当てています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/advanced-wordpress-management-using-wp-cli-on-alibaba-cloud-ecs—part-1_590770)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

[Alibaba Cloud Tech Share](https://www.alibabacloud.com/ja/campaign/techshare)執筆者のJeff Cleverley著。[Tech Share](https://www.alibabacloud.com/ja/campaign/techshare)は、技術的な知識やベストプラクティスをクラウドコミュニティ内で共

元記事を表示

[Laravel8]ログイン機能付きでプロジェクトを作成するまで

1. [composerでプロジェクトを作成する](#1-composerでプロジェクトを作成する)
2. [Jetstreamをインストールする](#2-Jetstreamをインストールする)
3. [LivewireかInertiaのどっちかをインストールする](#3-LivewireかInertiaのどっちかをインストールする)
4. [ビルドする](#4-ビルドする)
5. [データベースを作る](#5-データベースを作る)
6. [.envファイルでデータベースを変更する](#6-.envファイルでデータベースを変更する)
7. [マイグレーションする](#7-マイグレーションする)

環境:XAMPP for Windows, Laravel Framework 8.6.0

###1. composerでプロジェクトを作成する

まずはcomposerを使ってプロジェクトを作成します。
以下のコードの場合、『your-project』という名前のプロジェクトを作成します。

“`
composer create-project –prefer-dist larave

元記事を表示

PHP Laravel 6 おすすめ映画投稿サイト作成過程 8:ジャンルタグ追加編(後編)

##controllerとviewファイルの作成

recommendsのviewファイルを複製して使用しました。
他のviewファイルも同様です。

“`recommend/resources/views/tags/create.blade.php
@extends(‘layouts.app’)

@section(‘content’)

{{ __(‘Login’) }}
元記事を表示

PHP Laravel 6 おすすめ映画投稿サイト作成過程 8:ジャンルタグ追加編(前編)

#ジャンルタグの追加

####映画のジャンルをタグで分けられるようにします

##必要なファイルの作成
※-a はallオプション

“`
$ php artisan make:model Modesl/Tag -a
“`

##マイグレーションファイルの設定

タグは以下の5種類にしますが、いずれもタイトルカラムの一つとなります。
よって、追加するのはタイトルカラムのみです。

タグ:SF アクション コメディ ドキュメンタリー サスペンス

“`recommend/database/migrations/2020_09_25_124109_create_tags_table.php
public function up()
{
Schema::create(‘tags’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->string(‘title’);
$table->timestamps(

元記事を表示

PHP Laravel 6 おすすめ映画投稿サイト作成過程 7:ルートの制限編

#ルートの制限

####レート制限
Laravelには、ルートにレート制限をかける便利なミドルウェアが用意されています。
今回は、ゲストと認証ユーザー別のレート制限をかけて、ログインしていないとRecommendContorollerのページに遷移できないようにしてみました。

“`recommend/app/Http/Controllers/RecommendController.php
Auth::routes();

Route::middleware(‘auth:api’, ‘throttle:60,1’)->group(function () {
Route::resource(‘recommends’, ‘RecommendController’);
Route::get(‘/’, ‘RecommendController@index’);
});
“`

誤って Auth::routes(); を制限下に置かないようにしましょう。
以下のようにしてしまうと、ログインページにも遷移できなくなってしまいます。

“`recommend/app/Http/Con

元記事を表示

Laravel/ui のインストール

#インストール
Laravel 6 からcssフレームワークが分離したため、別にダウンロードが必要です。

##laravel/uiのダウンロード
“1.x” で最新版がインストールされますので、必ず入力しましょう。

“`
$ composer require laravel/ui “1.x” –dev
“`

最初、以下のコマンドでダウンロードしたため、スカフォールド生成時にエラーが発生しました。注意してください。

“`
$ composer require laravel/ui:^1.0 –dev //最新版ではないのでエラーを吐きます注意してください。
“`

##基本的なスカフォールドを生成

ui系

“`
$ php artisan ui bootstrap
$ php artisan ui vue
$ php artisan ui react
“`

autu系
Reactで実装する場合

“`
$ php artisan ui bootstrap –auth
$ php artisan ui react –auth
“`

Vueで実装する場

元記事を表示

OTHERカテゴリの最新記事