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

PHP関連のことを調べてみた2019年12月18日
目次

初心者のためのセルフレビューチェック項目〜クソコードのレビューはさせない〜

## この記事について
新卒1年目のわたしがコードレビューで指摘された箇所を参考に、初学者がよく指摘されることとその対処法をまとめました。
どの言語にも共通することと、PHP / Laravel 限定のもの別にまとめてあります。
また、それぞれのミスについて、`指摘されたくない度`を星5つ満点で評価してみました 笑
レビューされるとき、レビューするときにこの記事に書いてあることが参考になればいいなと思います。

### 注意
– あくまでも弊社基準のレビューです
– VSCode 使っている人向けかもしれません

## 言語に関係ないイージーなミス

### ■ スペルミス
`指摘されたくない度★★★★★`
指摘されたら恥ずかしいやつ。

#### [対処法]
– VSCode 拡張機能 [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)
– スペルミスしてる単語を下画像のように波線でハイライトしてくれる

元記事を表示

Laravelにて「.env.testing」がうまく読み込まれないときの対処法

# はじめに
マイグレーションファイルを追加して、以下のコマンドを実行したのですが、「Nothing to migrate.」となり、マイグレーションが実行されなかったので、対処法をまとめました

“`bash
$ php artisan migrate –env=testing
Nothing to migrate.
“`

# Laravelのバージョン

“`bash
$ php artisan –version
Laravel Framework 5.8.29
“`

# 対処法
以下のコマンドを実行して、キャッシュをクリアすることで、マイグレーションが実行されました

“`bash
$ php artisan config:clear
Configuration cache cleared!

$ php artisan migrate –env=testing
Migrating: 2019_12_17_150625_create_hoges_table
Migrated: 2019_12_17_150625_create_hoges_table (0.0

元記事を表示

Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編

# はじめに
Vue.jsとLaravelによるSPA実装のチュートリアル記事です。

本記事は、4本の連載記事の4本目です。

[Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編](https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編](https://qiita.com/minato-naka/items/9241d9c7a7433985056d)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編](https://qiita.com/minato-naka/items/0e709cb0e6628c82c1c5)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編](https://qiita.com/minato-naka/items/9362ea5af5f823c95b0b)
↑↑今ここ↑↑

# 前回まで

元記事を表示

Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編

# はじめに
Vue.jsとLaravelによるSPA実装のチュートリアル記事です。

本記事は、4本の連載記事の3本目です。

[Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編](https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編](https://qiita.com/minato-naka/items/9241d9c7a7433985056d)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編](https://qiita.com/minato-naka/items/0e709cb0e6628c82c1c5)
↑↑今ここ↑↑
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編](https://qiita.com/minato-naka/items/9362ea5af5f823c95b0b)

# 前回ま

元記事を表示

Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編

# はじめに
Vue.jsとLaravelによるSPA実装のチュートリアル記事です。

本記事は、4本の連載記事の2本目です。

[Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編](https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編](https://qiita.com/minato-naka/items/9241d9c7a7433985056d)
↑↑今ここ↑↑
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編](https://qiita.com/minato-naka/items/0e709cb0e6628c82c1c5)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編](https://qiita.com/minato-naka/items/9362ea5af5f823c95b0b)

# 前回ま

元記事を表示

Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編

# はじめに
Vue.jsとLaravelによるSPA実装のチュートリアル記事です。

本記事は、4本の連載記事の1本目です。

[Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編](https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2)
↑↑今ここ↑↑
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編](https://qiita.com/minato-naka/items/9241d9c7a7433985056d)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編](https://qiita.com/minato-naka/items/0e709cb0e6628c82c1c5)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編](https://qiita.com/minato-naka/items/9362ea5af5f823c95b0b)

Vue.j

元記事を表示

Laravel autoload されるからrequire_onceは不要

# 前置き
Laravelではrequireを書くことが殆どないので「あれ?PHPってファイルの読み込み不要なんだ」みたいな錯覚に陥ってしまいました。

“` php
// requireしなくていいじゃん!!!PHPすげー?
use Carbon\Carbon;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
“`

# 生PHPの場合
PHPはファイルを事前に読み込み(required)、別ファイルとの連携を行っています。

“` php
// ファイルの読み込み
require_once ‘Sub/hello.php’;
// 読み込んだファイルのHelloクラスoutputの実行
echo Hello::output();
“`
# Laravelの場合
全ファイルをrequire_onceしていると骨が折れてしまうので、
`public/index.php`で事前にファイルをautoload,読み込んでいます。

“` php
require __DIR__.’/../vendor

元記事を表示

2020国内開催予定の技術カンファレンスをまとめてみた

## 概要

2020年に国内で開かれるカンファレンスを時系列順にまとめました。

* ジャンルも規模も関係なくまとめています。
* 随時更新中

## 一覧

### 1月

#### [Regional Scrum Gathering Tokyo 2020](https://2020.scrumgatheringtokyo.org/index.html)

日時: 2020/1/8-10
場所: 東京都千代田区 御茶ノ水ソラシティカンファレンスセンター

#### [Awwwards Conference Tokyo](https://conference.awwwards.com/tokyo/)

日時: 2020/1/23-34
場所: 東京都千代田区 イイノホール&カンファレンスセンター

#### [SRE NEXT](https://sre-next.dev/)

日時: 2020/1/25
場所: 東京都千代田区 ヤフー株式会社

#### [NetSci-X 2020 Tokyo](https://netscix2020tokyo.github.io/)

日時:

元記事を表示

[Re:ゼロから始めるVue生活] Vueで検索/ソートさせてみた(php連携)

Vueでリスト検索とソート機能を作ってみたので
さらに応用して、phpの配列データからVueに流し込んで処理した機能を作ってみました。

# ロジック
php配列データ

JSONデータに変換

JSONデータをJSの配列に格納

JSの配列をvueのdataに格納
これでvueで取り扱えるデータになりました。

computed(算出プロパティ)
matched:
フォーム入力の数値 <= budgetの数値のリストのリストを表示 sorted: ボタンのオンオフで昇順・降順ソート limited: limit数分表示できる ```php ‘1’, ‘name’ => ‘商品A’, ‘price’ => ‘500’],
[‘id’ => ‘2’, ‘name’ => ‘商品B’, ‘price’ => ‘300’],
[‘id’ => ‘3’, ‘name’ => ‘商品C’, ‘price’ => ‘2000’],
[‘id’ => ‘4’, ‘nam

元記事を表示

Laravel備忘録~初心者時代に引っかかったとこまとめ~

この記事は[2019年近畿大学AdventCalender](https://qiita.com/advent-calendar/2019/kindai)の17日目の記事になります。

## はじめに

この記事は、PHPのwebアプリケーションフレームワークLaravelの環境構築や実際の開発の際に発生した問題を備忘録的にまとめたものです。基本的に実体験に基づくお話と、筆者の理解の低さから初歩的課題がいっぱいです。筆者は永遠の初心者です。~~すっごい簡素でごめんなさい~~

## 環境構築編

Laravelでの開発をしていくにあたって、開発環境の選択肢はいくつかあります。自分で必要なDB等を用意する、公式推奨のHomesteadを利用する、最近だとDockerを利用して作るといったものもあります。 当時の環境構築の際に採用したものとその際に出てきたの課題点をお話します。

最初にお断りとして、本記事では環境構築において出てきた不具合や課題を挙げますが、**作っていただいたサービス等そのものを否定するような意思は無い**ことをこの場で明記させていただきます。

### Laradoc

元記事を表示

WordPressの有料プラグイン「Search & Filter Pro」に除外検索(NOT IN)を追加する方法

###はじめに
複数条件検索を実装できるWordpressの有料プラグインが
1サイト$20と格安だったので購入してみた。

>**Search & Filter pro**

Home

カテゴリ、タグ、カスタムフィールドを自由に組み合わせて
絞り込み検索が手軽に実装になるというプラグインで、
$20にしてはかなり便利なプラグインだと思う。
(デモビデオ:[Search & Filter Pro – Demo Video](https://youtu.be/cOavBxgslj4))

早速作成中のWordPressサイトに追加してみたが、
今回実装したかった除外検索(NOT IN)が選択肢にない…

この部分だけ直接PHPを編集して実装してみた。

###1.「プラグインエディター」を開く
「ダッシュボード」の左カラムメニュー「プラグイン」内にある
「プラグインエディター」をクリックして、
画面左上の『編集するプラグインを選択』で
「Search & Filter Pro」を選択する。

###2.phpに除外検索用のコー

元記事を表示

exec・system関数

exec・system – シェルコマンドの実行

どちらも外部コマンドを実行するための関数

####exec
exec(実行コマンド, &出力結果出力用配列, &コマンドステータス 成功:0 失敗:1)
※返り値:実行結果の最終行

####system
system(実行コマンド, &コマンドステータス 成功:0 失敗:1)

####2つの違い
sxstem関数は、出力結果用配列を用意しなくても、出力される

##参考にさせていただきたサイト

外部コマンドを実行 – exec()、system()

元記事を表示

【Laravel】バリデーションでユニーク制約を無視したい

###ユニーク制約を無視したい場合とは?

例)
nameカラムとemailカラムにユニーク制約がかかっていた場合。
nameとemailのどちらか一方だけを変更して(一方は同じ値のままで)登録することができない。
 →ユニーク制約はすでにDB上にある値をはじいてしまうため。
              ↓
自身のIDでログインしている場合にその制約を無視したい

###Ruleクラスで無視するルールを追加
バリデータ内に自身のIDでログインしているときのみ制約を無視するルールを追加します。
公式ドキュメント https://readouble.com/laravel/5.5/ja/validation.html

“`php
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;

Validator::make($data,[
“name” => [“required”, “string”, “max:50”, Rule::unique(“users”)->ig

元記事を表示

【Laravel】validatorによるバリデーション

公式のドキュメントによればLaravelのバリデーションチェック(入力チェック)には3通りのやり方がまとめられてる。
https://readouble.com/laravel/5.5/ja/validation.html

・validateメソッドを使う方法
・フォームリクエストによる方法
・validatorインスタンスによる方法

ここでは3つ目のvalidatorインスタンスを利用する方法をメモしておきます。

“`php

all(), [

元記事を表示

json_decode の第2引数 $assoc は null も受け取れる

# `json_decode` に関する問題

## 背景

かなりエッジケースなネタです。一般 Web 開発者には殆ど役に立たないので,PHP 自体に関心のある方だけお読みください…w

まずこちらをご覧ください。

– [PHP: json_decode – Manual](https://www.php.net/manual/ja/function.json-decode.php)

JSON をデシリアライズするおなじみの関数ですね。この関数のシグネチャはドキュメント上では

“`php
json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] ) : mixed
“`

となっています。従来は

– 成功時はデシリアライズした値を返す
– 失敗時は `NULL` を返し,エラー原因を [`json_last_error()`] や [`json_last_error_msg()`] で取れるようにする

という動きでしたが,PHP 7.3 か

元記事を表示

【PHP】unset()された変数とnullを代入した変数の違い

# unset()について
[:マニュアル](https://www.php.net/manual/ja/function.unset.php)
unset()された変数は値として`null`を持つようになる。

“`php
$h = ‘kabocha’;
var_dump($h); //string(1) “kabocha”
unset($h);
var_dump($h); //NULL
“`
# 結論
`null`を代入または`null`へキャストした変数を参照してもエラーは出ず、変数としては`null`が定義されているものとみなされる。
`unset()`された変数を参照しようとするとNoticeレベルのエラー(Undifeind variable)が出る。

“`php
$var = 1;
var_dump(isset($var)); // true。
$var = null;
var_dump(isset($var)); // false。値はnullなのでisset()ではfalse。
unset($var);
var_dump(isset($var)); // fa

元記事を表示

【中小企業のエージェントを選ぶ理由をフリーランスエンジニアに聞いてみた】

#こんにちは!:open_hands:

株式会社アイスタンダードの本橋です。:raised_hand:

今回はフリーランスエンジニアに有益な情報を提供させていただきます。

既に株式会社アイスタンダードの「at-engineer」
https://at-engineer.jp/
を利用している方は、

他のイケてるエンジニアの投稿を見て知識を蓄えてください。:pray:

##一般の考え

初めてフリーランスになった方、フリーランス経験の浅い方は大手のエージェントを使いがちです。

もちろん、「長い物には巻かれろ」という言葉があるように、

大手のエージェントを使えば、安心します。:relaxed:

しかし、大手のエージェントは登録量が半端ないです。

そして、フリーランスエンジニアの方へ担当をつけるために

企業は多種多様な営業マン(新卒含め)を大量に採用します。

大体30-40人のフリーランスエンジニアに対してエージェント1人って感じですかね。
もっと多いかもしれないです。:frowning2:

###—こっから本題—:point_up:
##【中小企業のエージェ

元記事を表示

【Laravel】複数のartisanコマンドを同期実行し、エラーになったら途中で終了する

##環境
PHP : 5.6.30
Laravel : 5.1.46

##実装
呼び出されるバッチの中身

~~~Start.php
class Start extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = ‘start’;

/**
* The console command description.
*
* @var string
*/
protected $description = ‘start batch’;

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
try {
/

元記事を表示

PHPStan の trait にある phpdoc type hint が効かない場合はキャッシュを削除する

phpstan を使っていて、trait に書いたタイプヒントが効かない。

“`json:composer.json
{
“name”: “local/phpstan-test”,
“autoload”: {
“psr-4”: {
“”: “src/”
}
},
“require-dev”: {
“php”: “>=7.2”,
“phpstan/phpstan”: “^0.12”
}
}
“`

“`
composer install
“`

“`php:src/FooTrait.php

元記事を表示

【WordPress】メタ情報を直接headerに書く方法

##なにこれ?
プラグインでSEO設定しちゃうことが多いので忘れないようにメモ。
全部head内に記載。

##タイトル

“`php:管理画面の設定>一般で設定された「サイトのタイトル」を表示
<?php bloginfo('name'); ?>
“`
TOPページ以外は、「そのページのタイトル|ブログタイトル」の方がいい。

“`php:TOP以外
<?php wp_title(''); ?>|<?php bloginfo('name'); ?>
“`

##ディスクリプション(サイトの説明)

“`php:管理画面の設定>一般で設定された「キャッチフレーズ」を表示

  • OTHERカテゴリの最新記事