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

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

【入門】Laravel×Vue.js①〜セットアップ編〜

#はじめに
**PHPのフレームワークであるLaravel**で作成したアプリケーションに
**JavaScriptのフレームワークであるVue.js**を連携させる方法について説明します。

#Node.jsのインストール
Node.jsのパッケージ管理ツールnpmを使うので、
Vue.jsを利用するためにはNode.jsが必要です。

まず、[https://nodejs.org/ja/](https://nodejs.org/ja/)からインストールしましょう
推奨版、最新版どちらでも構わないので、インストールしてください。
スクリーンショット 2019-12-21 3.22.29.png

#Vue.jsをアプリケーションへインストールする
インストールするパッケージ一覧が記述されている`package

元記事を表示

【 Laravel 】「Laravel DB Designer 」を便利に使うための注意点「integer」について解説 Vol.4

##今回は” Laravel DB Designer “を便利に使うための注意点について書きました(vol4)

**「Laravel DB Designer」**
もっと最初から詳しく知りたい人は以下リンクからどうぞ
[以前のvol3の解説ページへ](https://qiita.com/daisu_yamazaki/items/1cb5987cc6d1008def82)
[以前のvol2の解説ページへ](https://qiita.com/daisu_yamazaki/items/92dc3cc599a264c3fb0f)

e.jpg

[https://laraveldb.com](https://laraveldb.com)
※日英対応サイト

##主機能
– **ER図作成 → 対応している

元記事を表示

Macに(L)AMP環境を構築してlaravelを動かした時のメモ

# LAMP環境とは
Linux + Mysql + Apache + PHP の、webの一般的な構成。今回はLinux以外をインストールした。

# 参考
https://qiita.com/moroya/items/a0b7881c4b3d809c6f21

MacにHomebrewでPHP, Apache, MySQLを導入する


https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09

# Homebrew
基本的に今回は全てhomebrewでインストールした。
入ってない方はこちらから→ https://brew.sh/

#PHPのインストール

“`sh
$ brew install php
“`

# Apacheのインストール

“`sh
$ brew install httpd
“`

“`sh
$ which apachectl
/usr/local/bin/apachectl
“`
このパスが返ってこれば大丈夫。

## Apacheの設定

“`
$ vi /usr/local

元記事を表示

【Laravel】URLからパラメータを渡す方法について

#はじめに
大きく分けてルートパラメータとクエリ文字列があります
それぞれについて説明します。
#ルートパラメータを使う
まず、ルートパラメータについて説明します。
ルートパラメータは簡単な方法で
例えば、、
http://localhost:8000/hello
などでアクセス時に値(上の場合はhello)を渡す方法です
実装していく機能の概要は
URLからメッセージの文字列を取得して、コントローラーから取得して、アクセス先のビューに返します
##URLにパラメータを持たせる
URLにパラメータを設定できるようにします。

“`php:routes/web.php
Route::get{‘/{message}’, ‘UserController@index’);
“`

`/{message}`にアクセスすると`UserController`の`index`アクションに繋がるように設定します。
`{message}`の部分に`hello`や`welcome`など好きな言葉を記述してください

##コントローラでパラメータを取得する
まずコントローラを作成します。

“`:ターミ

元記事を表示

自作WebサービスをXserverで公開するときの注意点と学び

#1.はじめに
2020年1月から転職活動を始める予定なのですが、ポートフォリオとして作成した自作WebサービスをXserverというレンタルサーバーにアップしました。

その時の注意点や学びを書きますのでご参考になればと思います。

このような方にはぜひ読んでいただきたい内容になっています。
・プログラミングの勉強を始めてWebサイト、Webサービスを作成中の方
・作成したサイト、サービスをこれからサーバーで公開する予定の方
・サーバーで公開しようと思ったけどうまく出来ていない方

逆に
・現役バリバリのエンジニアの方
・すでに問題なく自作サイト、サービスをサーバーで公開済みの方
には正直見る価値はないかなと思います(笑)

ではご覧ください!!

#2.自作サービスの内容

いきなりですが、作成したWebサービス兼ポートフォリオについて紹介させてください!

サービス名:KoSoDATE
サービス内容:子育てに関する情報共有サービス
使用言語:
・HTML
・css
・JavaScript(jQuery)
・PHP
・MySQL
製作期間:25日
製作時間:75h
フレームワークな

元記事を表示

Laravel 初心者メモ

##PHP version確認コマンド
“`
$php -v
“`

##PHP version upコマンド
“`
$sudo yum install -y –enablerepo=remi-php71 php
“`

##Laravel version確認コマンド
“`
$php artisan –version
“`

##ModelとMigrationを同時に作成
“`
php artisan make:model Models/Tweet -m
“`

##Laravelの知らない、あるいは正確なシンタックスを覚えていないメソッドをテストしたい時,使用プロジェクトのterminalで
“`
$php artisan tinker
“`
例)config(‘const.USER_STATUS.REGISTER’)
結果:”1″ //statusの値を取る

##PHPが用意している簡易ビルドインサーバーを使った時
そのローカル開発環境IPアドレスが必要なので
$ip aコマンドで調べる
そうすると
inetの後に IPアドレスである「192.168.33

元記事を表示

LaravelでPHPUnit入門

本記事は、[Laravelで認証用APIのテストを書く](https://qiita.com/curosuke/items/1ab4658e0c8a965de796)の記事を、APIではなくWeb画面用に書き換えたものです。
また、PHP Unitを実行しやすくするために、Laravel環境を利用+認証画面のセットアップも手順に含んでいます。

## テストコードを書く理由
1. テストのコストを下げるため
※ ユニットテストはコードを網羅的に動かすため、一度書いてしえばリグレッションテストのコストを下げられる
2. テストをしやすいコードにすることで疎結合なプログラムを意識してかけるようになるため
※ つまり **「メンテナンスしやすいコード」** が書けるようになる
3. テストコード自体がプログラマーに向けての仕様書になるから
※ 設計書(ドキュメント)として仕様を管理するのか、テストコードとして仕様を管理するかの違い
※ ドキュメントを書かないなら、テストケースは書きたい
4. テストコードを考えることによって、要件への理解が深まるから
5. プログラムの変更/追

元記事を表示

Java Vs. PHP Vs. Python

##古き良きツールはいまだに顕在

ITの世界は日々色々なものがリリースされてワクワクしますが
同時に**古き良きツールがなくなるか改悪化されることもしばしあります。**

私の中で改悪されたサービスは**Google finance**([リンク](https://www.google.com/finance))です。

以前は高機能チャートがついていて、様々なテクニカル指標を載せることができました。

しかし今はそのころの原型を留めておらず、検索エンジンの1便利機能になってしまいサービスとも呼べない代物になってしまいました。

今回は古き良き[Google Trend](https://trends.google.com/trends/explore?geo=JP)でIT界隈を調査したので共有させていただきます。
##Java Vs. PHP Vs. Python

5年間のこの3言語を比較すると以下のようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280363/

元記事を表示

PHPでキャッシュをMySQLに保存する方法

## 概要
キャッシュを使いたいけどキャッシュサーバがない場合に[symfony/cache](https://github.com/symfony/cache)のPdoAdapterを使うと簡単にDBにキャッシュを保存することができたのでメモ。

## 導入
composerでsymfony/cacheをインストール。

“`
composer require symfony/cache
“`

symfony/cacheはPSR-6なので扱いやすいPSR-16に変換するためにpsr/simple-cacheもインストールする。

“`
composer require psr/simple-cache
“`

以下実装例。DB名など自分の環境に読み替えてください。

“`php

元記事を表示

BEAR.Sundayでカスタムhostを利用する

# はじめに
[BEAR.Sundayアドベントカレンダー](https://qiita.com/advent-calendar/2019/bear-sunday)の[天重さんの記事](https://qiita.com/amashigeseiji/items/2d6c497afeedce2e0f2c)ではカスタムスキームの登録でしたが、この記事ではhostの登録です。
HTTPのURLでいえばプロトコルは変わらずホストが違う場合ということです。

# やりたいこと
例えば社内で共通の処理を独立した形で公開し、複数のアプリケーションにまたがって利用したいことなどないでしょうか?
最終的にアプリケーションからこんな感じで社内ライブラリのResourceを利用できたら便利そうですね。

“`php
$article = $this->resource->get(‘app://acme/article’);
“`

# ライブラリ(AcmeFramework)を作る
各アプリケーションから共通機能を利用するためのブリッジになるような基盤の仕組みを作成します。
このAcmeFramewor

元記事を表示

BEAR.SundayのCQRSを時限公開のコンテンツに使う

# はじめに
BEAR.Sundayには破壊的メソッド(onPut/onPost/onDelete)を実行した際にキャッシュを更新または破棄する[機能](http://bearsunday.github.io/manuals/1.0/ja/resource.html#cacheable)があります。キャッシュの参照とキャッシュの生成が分離できます。

注)CQRSは本来ソフトウェアパターンの名前ですが、本記事では便宜的にキャッシュ生成およびキャッシュ破棄に関するBEAR.Sundayの一機能の名前として言及しています。

# 時限公開コンテンツ
`@Cacheable`アノテーションが指定されたResourceは標準で有効期限が存在しないキャッシュが生成されます。
これは未来永劫公開され続けるものには有効ですが、指定時間に公開したい、もしくは指定時間に公開を終了したいようなコンテンツに対しては不利な面があります。
そのResourceに対して更新処理が行われない限りキャッシュが破棄されず、記事が公開されない・記事の公開が終了しないといった問題が発生します。

# Cacheableアノ

元記事を表示

PHPでZIPエンコーダを実装してみた

# PHPでZIPエンコーダを実装してみた

## 概要

PHPでZIPエンコーダを実装した。以下の特徴がある

* 一時ファイルを作成せずに出力可能
* 出力サイズを計測可能(ContenLengthとして使える)
* 大きなファイルを扱っても省メモリ
* 暗号化も可能
* ZIP64(ファイルサイズ4GB以上など)にも対応
* 詳細な更新日/作成日を設定可能
* PHP5.6以上、32bit版でも動作。ただしZIP64には64bit版が必要

ソースは [github – Rezipe] (https://github.com/wealandwoe/Rezipe) から

## 開発の動機

以前、ZIPダウンロード機能のより良い実装について[やさしいZIPダウンロード機能]( https://qiita.com/weal/items/1b303e16d6bc725cfe3b )という記事を書き、その中で [maennchen/ZipStream-PHP]( https://github.com/maennchen/ZipStream-PHP ) を利用したPHPの実装例を紹介し

元記事を表示

php7.4から波括弧を使用した配列や文字列のオフセットへのアクセスは非推奨になる

php7.4から波括弧を使って配列や文字列のオフセットにアクセスする文法は推奨されなくなります。

> “$var{$idx}“ でなはく “$var[$idx]“ を使って下さい。

“`php
$a = [100, 2, 3, 4, 5, ‘a’ => ‘hoge’];
var_dump($a{‘a’});
“`

“`
// 出力
string(4) “hoge”
“`
こういう書き方は注意ですね。

というか波括弧でも配列のオフセット指定が動くって知らなかった。。。

[波括弧を使った、配列や文字列のオフセットへのアクセス](https://www.php.net/manual/ja/migration74.deprecated.php#migration74.deprecated.core.array-string-access-curly-brace)

元記事を表示

PHPで画像が一致しているか検証する

[PHP Advent Calendar 2019](https://qiita.com/advent-calendar/2019/php)、20日目のエントリです。
前日は@cyclone_tさんの[FatFree Frameworkの紹介を書いてみたい]()のエントリとなります。

# はじめに
画像関係の案件に携わることになって結果的にPHPだけで画像検証しようってことになった話です。

Pythonで解析計画もあったけどPythonエンジニアが居なかったのと動的検証ではないのでOpenCVとかゴリゴリ解析を使うことは多分無いという前提で。

## TL;DR
デモ機作りました。適当な画像を入れて動かしてみてください。
[demo-app](https://github.com/mashirou1234/demo-app)
~~急いで作ったやつなので中身がとても汚いです許して~~

## 画像
今年めちゃくちゃ流行りましたね(見るの忘れた勢)
オリジナル
![tenki.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

1年目エンジニアのコードレビューで指摘された事に対しての振り返り

# まえがき
[「株式会Ancar ~Advent Calendar 2019~」](https://adventar.org/calendars/4429) 20日目を担当させていただきます。

[中古車の個人間売買をオンラインで行うサービス](https://www.ancar.jp/)
[全国の中古車からお買い得な車を検索・比較できるサービス](https://www.ancar.jp/search/) を展開しております。

#### 軽い自己紹介
[株式会Ancar](https://ancar.co.jp/)のWebエンジニアをしている、keiと申します。
私は以前、メーカーで電気設計エンジニアとしてインフラ整備を行っていました。
主な業務内容は、フローチャートに示す処理手順にしたがって処理を行うようにシーケンス図を書いていました。
そこから現職に転職をしたので、webエンジニアとしては1年の振り返りではなく、実質5ヶ月間(8/1~)の振り返りになります。

## 当記事の内容
社内のコードレビューで先輩方からご指摘いただいた一部をまとめました。
主にLaravel、Sym

元記事を表示

MacでLaravel環境構築

MacでLaravelのローカル環境を構築したのでメモ。

## 1.phpをインストール
“`
brew install php@7.2

export PATH=”$(brew –prefix php@7.2)/bin:$PATH”
“`

## 2.composerをインストール

・ターミナルより以下を実行

“`
brew install homebrew/core/composer

Updating Homebrew…
==> Downloading https://getcomposer.org/download/1.8.5/composer.phar
:
“`
PHPも勝手にインストールされる?

## 3.larevelをインストールする
“`
brew install homebrew/core/composer

Updating Homebrew…
==> Downloading https://getcomposer.org/download/1.8.5/composer.phar
:
“`

## 4.composerのパスを通す
.

元記事を表示

Symfony4.4から導入されたNotificationEmailが気になったのでさわってみた

[Symfony Advent Calendar 2019](https://qiita.com/advent-calendar/2019/symfony) 20日目の記事です。
Symfony4.4から導入された[NotificationEmail](https://symfony.com/blog/new-in-symfony-4-4-notification-emails)。『NotificationなEmailとは?』となったので、実際に触ってみました。

## NotificationEmailとは
NotificationEmailはSymfonyのメールデータ生成クラスのひとつです。TemplateEmailの子クラスで、基本的にはTemplateEmailクラスと同じ使い方です。TemplateMailと大きく違うところは、テンプレートファイルを指定しなくて良いことと、themeというプロパティができたこと、markdown()というメソッドが追加されていることです。

テンプレートファイルはデフォルト定義されており、“` vendor/symfony/twig-br

元記事を表示

【Laravel初学者向け】頻出キーワードの語彙帳

フレームワークを勉強しようとした時に理解が進まなくなる瞬間があります、それは訳の分からない単語が出た時。
なのでこの記事では、**特にLaravel学習中に単語の意味が解らない/理解が深くない単語が出た**、そんな時に備えてそれなりに**頻出されるキーワードを解説/紹介**していこうと思います。

**なおこの記事は、辞典並みの正確性より、理解を深める事を優先にした作りにしています。**
また、似通った概念は「/」で1項目に括り、同時解説をする事で情報をまとめています。

#フレームワーク/ライブラリ

フレームワークもライブラリも、システム構築をする為の機能を提供してくれるものです。

では逆に、フレームワークとライブラリの違いはなんでしょうか?
フレームワークは「安全性、メンテナンス性、セキュリティ、拡張性」と言った基本的な機能を使うだけで半自動的に組み込んでくれます。
逆に、ライブラリは便利な機能がただ提供されるだけです。

つまり、**フレームワークは、拡張性やセキュリティやメンテナンス性などを半自動的に提供してくれるもの**だと言えますね。

#MVC/Model/View

元記事を表示

SQLSTATE[HY000]: General error: 1364 Field **** doesn’t have a default value

# MySQLのフィールドにDefaultが設定されていない場合のエラー

サーバー移行が終わって、さてちょっと検証するか、と思ったら以下のエラーが。。

“`
SQLSTATE[HY000]: General error: 1364 Field **** doesn’t have a default value
“`
****にはフィールド名が入っています。

どうやら、データベースに登録しようとしたけれど、****のフィールドに何も入れてないからエラーになったよ、ということらしいです。

しかしおかしなことに、移行前のサーバーでは起きなかったんですよね。。

と思って調べたら、

### MySQLのバージョンによって動作が変わったみたいです。

#### 旧サーバーは以下

“`
# mysql –version
mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
“`

まあ正確にはMariaDBですが。。

#### 新サーバーは以下

“`
# my

元記事を表示

Laravelプロジェクトのテスト変遷

## 概要

この記事は[DMMグループ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/dmm) 20日目の記事です

DMM.comでサーバサイドエンジニアをやっている[juve534](https://qiita.com/juve_534)です。
現在は配信基盤のリプレイスプロジェクトにて、PHP×Laravelを使ったAPI開発やAWSを使ったインフラ構築を行っています。

今回は、自分たちのAPI開発における、テストコードの変遷を紹介したいと思います。

## 内容

### バージョン1
プロジェクトを始めた当初は、ServiceクラスやRepositoryのテストはインスタンスを `new` して、テストを書いていました。
コンストラクタインジェクションを使っているので、インジェクションするクラスはMockeryを使い、下記のように書いていました。

“`php

class HogeTest extend TestCase
{
public function testHoge($id)

元記事を表示

OTHERカテゴリの最新記事