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

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

PHP7技術者認定初級試験は実務で役立つのか? 「おすすめ度・難易度・勉強時間」

# PHP7技術者認定初級試験を受けてみた
私は受託開発のベンチャー企業で約1年実務を経験しています。技術力と知識量を上げるため、PHP7技術者認定初級試験を受けてみました。なので、資格で合格することが目的ではなく、**資格を受ける上で勉強で得られる知識が目的**でした。試験に合格したので、そこで得られた情報を共有します。

**この記事はこんな方におすすめ**

– PHP7技術者認定初級試験が実務に役立つのか知りたい
– おすすめ度・難易度が知りたい
– 勉強時間やおすすめの学習教材が知りたい

# 実務で役立つのか?

結論、**役に立ちません!!!笑**

理由は選択問題なので、**コードが書けなくても過去問を繰り返し勉強すれば合格してしまう内容**だからです。ただし、公式でおすすめしている認定教材の[初めてのPHP(PHP7対応版)](https://www.amazon.co.jp/dp/4873117933/)がバランスよく学べるので、「試験は微妙だけど、認定教材は良い」という感じです。「じゃあ、試験受けずに認定教材だけやればいいんだね!」と言われそうですが、明確な目標が

元記事を表示

Laravelで作るアプリケーションとドメインを(ついでにinfraも)独立させたパターン

こんにちは、kazuheiです。[Laravel Advent Calender 2019](https://qiita.com/advent-calendar/2019/laravel) 8日目の記事です。

# この記事について

2日目の@nunulkさんが [Laravel のモデルクラスをどこに配置するか問題について考えてみる](https://qiita.com/nunulk/items/e39f25785ad015c8181c)という記事を書いていらして、そこに「パターン4: アプリケーションと独立した Domain」というのが紹介されており、メリデメを書いて欲しいとありました。ちょうど自社で開発する[M&Aクラウド](https://macloud.jp)というサービスがそのような設計方針を採用していたので紹介させていただきます。

# なぜそのような設計にしているのか
このような設計にしたい理由は2点です。

– データベースへのアクセスをするクラスとロジックを持つクラスを明確に分ける
– LaravelのDIコンテナを利用して外部のデータソースへのアクセスを抽象

元記事を表示

Django Admin を既存の(PHPなどの) ECサイトに適用する手順と機能紹介

弊社内で、EC-CUBE という PHPのフレームワーク (ECサイト構築パッケージ) で動いているECサイトに対し、機能の追加のため、モバイルAPIや外部ツールからのデータ登録連携をするためのAPI、それとスタッフの閲覧・運用のためのAdmin機能を開発することになりました。

# 従来の Admin を変える

EC-CUBE にも Admin はありますが、機能を増やす際に書くコード量は比較的多いと感じており、このまま使い続けるのも良くないと思ったため、今回は、モバイルAPIと Admin を Django で新たに作ることにしました。

今更 Django という感じはしますが、少ないコード量で作れる Admin は使いやすく、Form, 認証やPermission, テンプレートエンジン、ビューコントローラなど Django のコア機能がうまく調和したとても良いアプリケーションだと思っており、私は昔からかなり好きです。

一方で、操作対象はリレーショナルDBに限定されますが、お客様の購入を管理・集計するECシステムでは、リレーショナルDBがまだまだ主役であると思っています。

元記事を表示

外為で勝つために その3 ~ LAMP 構築編

前回「[外為で勝つために その2 ~ MySQL 接続編](https://qiita.com/Kazuya_Murakami/items/ec9c244393ba862d6ce6)」の続きです。

チャートを Web 表示してみる件です。
外為で勝つという趣旨から遠ざかっているような気がしないでもないですが、深く考えてはいけません。前に進みましょう。

【参考】
[LAMPのインストール・Raspberry Pi3 + Raspbian Stretch](http://marchan.e5.valueserver.jp/cabin/comp/jbox/arc112/doc11205.html)
[RaspberryPiに「Apache2」「PHP5」「MySQL」「phpAdmin」をインストール – Kamuycikap – SentenceDataBase](http://kamuycikap.hatenablog.com/entry/2015/02/25/184420)

## パッケージのインストール
Apache2(HTTP サーバ)、PHP 実行環境、phpmyadmin

元記事を表示

Lumen 6.2 でセッションを使う

`Lumen 6.2` には `illuminate/session` が含まれていますが、デフォルトで無効になっているので有効化させたときの手順メモ

# 動作環境

“`sh
Windows10 Home Edition
XAMPP 7.2.17

$ php –version
PHP 7.2.17 (cli) (built: Apr 2 2019 20:11:25) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.17, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans

$ php artisan –version
Lar

元記事を表示

Laravelで雑にクエリ結果をキャッシュする

## はじめに
本記事は[Laravel #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/laravel-2)の8日目の記事です。

## TL;DR
– 端的に言うと`GeneaLabs/laravel-model-caching`[^GeneaLabs/laravel-model-caching]を用いたデータベースの結果キャッシュのススメ
– データベースへのクエリ数を何とか減らしたい場合に有効
– 追加実装することなく、クエリ結果をキャッシュしてくれる
– 「雑にキャッシュする」とは、`GeneaLabs/laravel-model-caching`が複雑なリレーションをキャッシュしてくれないから
– サンプルアプリを作ったので、とにかく手を動かして覚えたい方は、こちら[^Example]を参照のこと

## Laravelのキャッシュといえば
`Laravel`公式のドキュメント[^caching]にあるように、データベースから取得した結果を特定のキーに紐づけてキャッシュする方法を思い浮かべると思

元記事を表示

【Laravel】withメソッドを使用して多対多で発行されるクエリ数を削減する方法

# 多対多
例えば以下のような例。
トピック:topics
タグ:tags
中間テーブル:topic_tag

# やりたいこと
各トピックごとに紐付いているタグ全件を取得する。

# 変更前
“`php
orderBy(‘created_at’, $order);
return $query->get();
}

public function tag

元記事を表示

「高校文化祭の食販で自動注文機を作った話」を勝手に再現してみた

#はじめに
当記事は、@RyotaroSaito さまの[高校文化祭の食販で自動注文機を作った話](https://qiita.com/RyotaroSaito/items/7a92d8458ea27dcdecb3) を(簡易的に)(勝手に)再現するプロジェクトです。
~~再現と言えるレベルのものであるかは置いておいて~~

個人的に、学校行事でこのような規模のシステムを構築するのは至難の業だなと思いました。学生には時間がありませんから。
システム設計から開発まで、チームメンバと連携して遂行することはとても大きな経験だと思います。
感銘を受けましたので、簡易的ではありますが自分でも再現してみようと思いました。

>実はSwiftのプログラムは初めて書いたのですが、やはりプログラミングは習うより慣れよ、ですね。コードをどれだけ模写しても、本だけを読み続けても、Progateに張り付いていても能力は伸びないと思います。実践的に開発することが言語習得の近道だと気付きました。

と記事内で仰られていますが、本当にその通りです。
この先きっと優秀なプログラマになられるんだろうなな、と思いました。

元記事を表示

shizuoka.php#1での振り返りとか補足とか

# はじめに
@polidogさんに誘われてshizuoka.php#1で登壇しました。
https://shizuokaphp.connpass.com/event/26794/

その時の補足というか、事前の試行錯誤とか書きます。
取り留めがない上にポエム感が拭えませんが(特に後半)、ご容赦のほど。。。

# 登壇資料
資料とデモで使ったコードは以下に上がってます
https://github.com/toniokatanuki/shizuokaphp.20190914

特にpptxは以下にあります
https://github.com/toniokatanuki/shizuokaphp.20190914/blob/master/shizuoka.php.pptx?raw=true

# オプション機能実装のための試行錯誤
このテーマの準備をするにあたって、コマンドラインオプションについて結構手こずったのでこの場を借りてどんなことやってきたかを紹介します

## 候補1.getopt関数
ググるとgetopt関数が用意されてるよって記事を見かけたけど、どうも直感的じゃなかった

元記事を表示

artisan up/downがファイル書き込み権限エラーになる

Laravelのメンテナンスモードを有効化無効化する`artisan up/down`コマンドだが、`storage`ディレクトリにApacheなどWebサーバの権限を与えてるとSSHユーザーでコマンドを実行したときに権限エラーになってしまう。

“`
$ php artisan down
Failed to enter maintenance mode.
file_put_contents(/home/user/app/storage/framework/down): failed to open stream: Permission denied
“`

`sudo chown -R 777 storage`で一時的に権限を変えて書き込めるようにしてもよいが、`su`でWebサーバーのユーザーに成り代わって書き込むこともできる。

“`
$ sudo -u apache php artisan down
Application is now in maintenance mode.
$ sudo -u apache php artisan up
Application is

元記事を表示

【Laravel】未ログイン状態での操作を保留して、自動ログイン→操作実行する方法

# 概要

Laravelで**「未ログイン状態での操作を保留して、自動ログイン→操作実行する」**コードの例を書きます。参考にしていただけたら幸いです。

なにを言ってるのか分かりづらいので、実例で紹介します。

## やりたいことの具体例

ダンスレッスン予約サイトを例に仕様を説明します。

画面下部の「予約する」ボタンを押すだけで「ツイッター連携ログイン(許可承諾)→予約」がシームレスに実行できるようにしました。

スクリーンショット 2019-12-07 18.05.21.png

画像の「予約する」ボタンを押すと、Twitter認証によるログインが行われて予約完了します。お手軽?

これまで利用していた予約サービスは、予約の前に「ユーザー登録→ログイン」が必要でした。これを取り除き、予約までのめんどくさ

元記事を表示

Mac に Laravel6.X のローカル開発環境構築

ブラウザで VM に設置した Laravel6 プロジェクトのトップページを表示するまでの作業ログ
本家が提供してくれてる Homestead なるもので簡単に出来るらしい。

## VirtualBox をインストール

https://www.virtualbox.org/wiki/Downloads

## Vagrant をインストール

https://www.vagrantup.com/downloads.html

## Homestead Vagrant Box のインストール

今回は Homestead も 共有フォルダ(後述) もユーザーの Home に設置する。

“`
$ cd ~
$ vagrant box add laravel/homestead
“`
※ダウンロードに数十分ぐらいかかった

## Homestead のインストール

“`
$ git clone https://github.com/laravel/homestead.git ~/Homestead

$ cd ~/Homestead

$ bash init.sh
“`

#

元記事を表示

いつか使える(かもしれない) Laravel Tips

# TL;DR
[VALU Advent Calendar 2019](https://qiita.com/advent-calendar/2019/valu)の7日目の記事です。
今回はいつか使えるであろうLaravelの知見を列挙してみました。

## モデルとマイグレーションファイルとresourceのあるコントローラーを同時に生成する

いつも新しいファイルの生成時に使うそれぞれのコマンドたち

“`bash
$ php artisan make:migration create_posts_table

$ php artisan make:model Post

$ php artisan make:controller Post
“`

実はこれらは1つのコマンド実行できる

“`
$ php artisan make:model Post -mcr
“`

m : モデル
c : コントローラー
r : resource

新しい機能を作る時などに試して欲しい

## マイグレーションと同時にSeedingする
新しいマイグレーションファイルを作った時、ダミ

元記事を表示

Laravel 5.8 + dockerで新規プロジェクトを作成する

dockerコンテナでlaravelのスタータープロジェクトを作成します。

# 手順

## 1. ベースイメージの作成

php7.2をベースに composer + laravel 5.8のイメージを作成する

“`Dockerfile
FROM php:7.2-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update && \
apt-get install -y \
libpq-dev \
zlib1g-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*

RUN pecl install xdebug && docker-php-ext-enable xdebug
RUN docker-php-ext-install zip pdo

# install composer
RUN php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
RU

元記事を表示

Laravel Faker で 日付ダミーデータ間の整合性を取る

## $fakerでdateTimeのダミーデータの整合性を取りたい

“`./database/factory/PlanFactory.php
use Faker\Generator as Faker;

$factory->define(\App\Plan::class, function (Faker $faker) {
return [
//
[
‘start_datetime’=>$faker->dateTimeBetween(‘1day’, ‘1year’)->format(‘Y-m-d H:i’),
‘end_datetime’=> $faker->dateTimeBetween(‘1day’, ‘1year’)->format(‘Y-m-d H:i’),
]
];
});

“`
ダミーデータでstart_at とend_atの値がランダムになってしまうためend_at はstart_at の1~2時間後に値を設定したい。

## Faker dateT

元記事を表示

PHPUnitでプログラミングの理解度を測る試験を作れるんじゃないかという件-その2-

# 前回からの流れ
PHPUnitを使用して、プログラミングの理解度を測る試験を作れるかの検証を前回行いました。
実際にできそうなので、今一度作りたいものを明確化してみます。

### 作りたいもの
使用者が試験を受けることで、どれだけプログラミングの要素を理解できているか、を確認できるシステム

* 試験の作成ができるだけ汎用的に行える。

* 競技プログラミング的なものではなく、できるだけ実務に近い試験を行える。

### 基本設計
作成するに際して、実際にどんな設計をしているのかも書いていこうと思っています。
ただ、そんなに大規模ではないので、今回は以下の設計だけさらっと作っていくことにします。

* ユースケース図(起点になる部分なので、一応)
* シーケンス設計
* データベース設計
* 画面設計

この4つだけ作って、最終的にはdocker-composeで起動できるようになれば良いかな?

### ひとまず、ユースケース
基本設計の起点になる部分です。
システムが簡単に何を行えるのかを表しています。

設計をするとき私はこの図を作成したあと、それぞれの行えることを詳細に展

元記事を表示

Laravelで複数ブラウザでのログインを制限する

## 概要
Laravelでログイン認証を実装する際、複数のブラウザでのログインを制限したい(他のブラウザで新たにログインしたらそれまでログインしていたブラウザのセッションを破棄する)という要件があった際の対応を記します。

5.6以降と5.5以前で実装が異なるのでご注意ください。
以下の実装は、それぞれ6.6.2、5.5.4で動作を確認しています。

## 実装
基本的な認証が実装してあることを前提とします。
まっさらなLaravelプロジェクトであれば、
5系なら`php artisan make:auth`
6系なら`composer require laravel/ui –dev`と`php artisan ui vue –auth`
を実行してある状態です。
[参考:Laravel 6.x 認証](https://readouble.com/laravel/6.x/ja/authentication.html)

### Laravel5.6以降
Laravel5.6以降であれば、AuthファサードのlogoutOtherDevicesメソッドで簡単に実装することができま

元記事を表示

Laravelで複雑性と戦うための4つのTips

11月からオープンロジで働いている@pakkunです!
入社したばかりのため、物流というドメイン知識を今必死に覚えています :rocket:

アドベントカレンダーを書くと年末を感じますね!
今年は、Laravelを使っていても気づいたら複雑な処理が増えている時があるなーと思い、複雑な実装になりうる課題をシンプルにする4つのTipsを書きました。

個人的なTipsになりますが、この記事を読んだ方が、より早く価値が提供できるようになれば幸いです!

この記事でシンプルにできるのは下記となります。

1. **複数のモデルの値を結合したい、もしくはモデルの値を使用して計算したい**
1. **Joinした結果、もしくはGroup Byをした結果を使いたい**
1. **Apiの結果をモデルとして定義したい**
1. **GETやPOSTでリクエストされた情報を変換して使いたい**

# 1. 複数のモデルの値を結合したい、もしくはモデルの値を使用して計算したい
Viewでユーザーのフルネームを表示しようとして、下記のようにUserモデルの`last_name`、`first_name`

元記事を表示

初心者でもLaradockでLaravelの環境構築をエラーなしで行おう!(windows ver)

###初心者だけどLaravelをエラー出さずに簡単に環境構築したい!
そんな欲張りなあなたのための記事です!
教えてる人たちが何回もこれで構築してますので、まあ多分これで大丈夫!
あなたもLaravelを始めましょう!

Macの方はこちらの記事の方をご参考ください!!
https://qiita.com/mukae_tech/items/24709085948a6d707da3

####開発環境
・Laravel6.*
・Mysql8.*
・windows 10pro以上
・DockerとGit、composerをまだインストールしたことない方は各自インストールしててください!

 Dockerインストールの良記事
 https://ops.jig-saw.com/techblog/docker-for-windows-install/
 centOSを起動するとか以降はやらなくてもOK!

 Gitインストールの良記事
 https://eng-entrance.com/git-install

 composerインストール良記事
 https://mseeeen.mse

元記事を表示

file_get_contentsくん、今までごめんね。

私が弊社に新卒で入社してから,プロジェクトの中で様々な調査作業をやってきました.
中でも統計を取るタイプの調査が多かったです.
その中でも印象に残っていることがありますので,紹介しようと思います.

## 大容量 CSV を読み込む

弊社,広告関連の企業なのですが,ある日,上司からある調査依頼が来ました(一部アレンジしています).

> 弊社 HP へのアクセスや広告表示,コンバージョンの履歴で,どの県からのアクセスが多いか,また,どの時間帯にアクセスが多いかを分析してくれ

私は早速,サーバでデータを収集しました.
普段から PHP を使っておりましたので,この集計作業も PHP でやることにしました.
慣れた手つきでファイル名を指定し, `file_get_contents` 関数でファイルを読み込む処理を記述していきます.

(ファイル読み込み部分のみ)

“`php

元記事を表示

OTHERカテゴリの最新記事