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

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

CakePHP2でgroup byして最新レコード取得

CakePHP2のfind()では特定IDでGROUP BYした上でそれぞれの最新レコード取得するのが難しかったので後の為にメモ

“`:test
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page_id` varchar(50) NOT NULL,
`update_date` datetime NOT NULL,
`updater_name` varchar(50) NOT NULL,
`reason` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `test_UN` (`page_id`,`update_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
“`

①のようなテストデータから②を取得したい

### ① 元データ

|”id”|”page_id”|”update_date”|”updater_name”|”reason”|
|—|—|—|—

元記事を表示

PHP基礎 Part2

# 概要
PHPの独学で学んだ内容をアウトプットしていく

## データ型
[Part1]でも出てきた文字列や数字といった値には、それぞれデータ型というものが定義されている。
下の図1はデータ型の一覧である。
[Part1]:https://qiita.com/aizawa_K/items/9fe199f16af2761baf31

【図1】データ型と型名

| データ型 | 型名 |
|:———–|————:|
| boolean | 論理型 |
| integer | 整数型 |
| float | 浮動小数点型 |
| string | 文字列 |
| array | 配列 |
| resource | リソース|
| NULL | ヌル値 |

## 変数とは
初学者向けに説明されている内容は、「データを入れる箱」とされている。
これでもざっくりとした理解にはつながるが、個人的には以下の記事の内容にしっくり来るものがあった。
[なぜ日本人はオブジェクト指向をなかなか理解できないのか?](https://gihyo.jp/book/pickup/20

元記事を表示

Mac × MAMP × Laravelで接続した時に起こった事

#事象
・なんかLaravelインストールしたらMAMPの「MY WEBSITE」に接続できなくなった
 ※正確に言うと、「The requested URL /~ was not found on this server.」の404エラーが出ました。

##原因
・Laravelインストールしたと思ったらできてなかった….
→composer導入した後に、インストールしたつもりになってた

・Laravel側で複数設定が必要なファイルに対して追加できていなかった。
 ■database.php
  →使用しているデータベースの情報を追加できていなかった

・MAMP側の設定ファイルでLaravelの追加ができていなかった
 ■httpd-vhosts.conf
  →設定されているPort番号がLaravelの行で設定している
   Port番号と一致していなかった。
   NameVitualHost *:oooo
   ※上記とここのファイルでLaravelの追加が必要
 ■httped.conf
  →ここでVitural hostsの下の行でコメントアウトされている文章

元記事を表示

Laradockを用いてDocker/Apache/PHP7.2/MySQL/Laravelの開発環境を構築する

Laradockクローン

ルートディレクトリにて、下記を実行。
$ git clone https://github.com/LaraDock/laradock.git
.envをenv-exampleからコピーして作成。
$ cd laradock
$ cp env-example .env
プロジェクト作成

まずは、ワークスペースを起動。
$ cd laradock
$ docker-compose up -d workspace
ワークスペースに入る。
$ docker-compose exec workspace bash
Laravelのプロジェクトを作成
# composer create-project laravel/laravel web
dockerを一旦終了
# exit
$ docker-compose down
laradock/.envのpathを作成したプロジェクトに変更。

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../new_proj

元記事を表示

多次元連想配列の数値の合計値を出す

# 多次元連想配列の数値の合計値を出す

“`php:index.php
array(3) {
[0]=>
array(2) {
[“name”]=>
string(5) “apple”
[“stock”]=>
int(2)
}
[1]=>
array(2) {
[“name”]=>
string(5) “lemon”
[“stock”]=>
int(4)
}
[2]=>
array(2) {
[“name”]=>
string(5) “orange”
[“stock”]=>
int(8)
}
}
“`

こちらの連想配列の`”stock”`の値を合計していきます。

処理方法は

“`php:index.php
$sum_stock = array_sum(array_column($fruits, ‘stock’));
“`

です。
`array_column()`で配列の単一のカラムを抽出し、その値を`array_sum()`で合計するとい

元記事を表示

【PHP】インターフェイスとクラスの抽象化の使い分けついて

この記事は[エイチーム引越し侍 / エイチームコネクト Advent Calendar 2019](https://qiita.com/advent-calendar/2019/hikkoshi) 2日目の記事です。

# きっかけ
業界未経験からエンジニアなり、およそ半年が経ちました。最近ゼロからちょっとしたツールを作る機会をいただき、なんとか形にはなったのですが、拡張性や保守性を担保するには、コード側で制約するような設計が必要なのでは無いかと思い、これらについて調べてみました。

# インターフェイスとクラスの抽象化は似ている

## インターフェイス
複数のクラスに共通の機能を実装するために、その実体を定義することなく指定する仕組みで、インターフェイスを用いると、特定のオブジェクトが特定の機能(メソッド)を有することが保証されます。インターフェイスに定義されているメソッドを実装しないと致命的なエラーとなります。

## クラスの抽象化
共通の機能を抽象的な親クラスで定義し、特有の機能は個々の子クラスでそれぞれ実装させたい場合に定義します。抽象化を使うには、抽象化したクラスを子クラ

元記事を表示

【PHP7.4】PHP7.4がリリースされたので新機能全部やる

2019/11/28にPHP7.4.0が[リリースされました](https://www.php.net/)。
ということで、ここでは[ドキュメント化されている](https://www.php.net/manual/ja/migration74.php)新機能や変更点を片端から試してみます。

これら以外にもドキュメント化するほどでもない軽微な変更が多々入っているはずですし、単なるバグ修正も山ほどあるのですが、今回はそのあたりには触れません。
把握しきれていませんしね。

# インストール

古いXAMPPが入っていたらディレクトリまるごと削除。
最新の[XAMPP](https://www.apachefriends.org/jp/index.html)をインストール。
[Windows版PHP](https://windows.php.net/download/)から`VC15 x64 Thread Safe`をダウンロード。
解凍したディレクトリを`path\to\xampp\php`にまるごと上書きコピペ。
`php.ini-development`を`php.ini`にコピー

元記事を表示

Laravel のモデルクラスをどこに配置するか問題について考えてみる

## この記事について

[Laravel Advent Calender 2019](https://qiita.com/advent-calendar/2019/laravel) 2日目の記事です。

Laravel では、モデルクラスの置き場所が決められておらず、デフォルトで作成される User クラスは app 直下に置かれています。とはいえ、app 直下にすべてのモデルクラスを置いてしまうと、ツリービューで見たときの視認性が悪くなってしまうので、できれば役割やコンテキストごとに分割して配置したい、という気持ちになります。

これまで10近く Laravel を使ったアプリケーションに携わってきて、様々な構成を見てきましたが、わりと最近はひとつの形に収斂されてきてる印象を受けるので、問題提起を兼ねて、様々なパターンについてメリット/デメリットを考察しつつ、どういう配置がいいのか探ってみようという試みです。

## はじめに

### 環境

– Laravel 6.6.0

### Model/モデルの定義

本記事では「Model」(アルファベット表記のもの)は Eloque

元記事を表示

Laravelで超簡単に検索機能を作成するPackageを作成した

この記事は[Laravel #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/laravel-2)の2日目になります。

## 検索機能?

Webアプリを作成していると、よく検索機能作成しますよね?
↓こんな検索画面です。
![2019-12-01_21h39_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49429/8a8337ce-f36a-6204-089b-efb60778f734.png)

このくらいシンプルであれば、`ifやEloquentを使って条件を追加する`のも悪くないですが、検索項目が多くなってきたり、複雑になってくると、途端に可読性が悪くなったり、めんどくさくなったりすると思います。

その為、Laravelの検索機能の作り方や、検索に特化したPackageなどを、ググったりしたのですが、簡単に検索を実装できるものがなかったので作ってみました。

## 作ったPackage

https://g

元記事を表示

[CakePHP]パスワードリマインダをつくったよ

#はじめに#
皆さんはパスワードを忘れたことはありますか?
私はあります。

そんな時に便利(?)なのがパスワードを忘れた方はこちらってやつですね。
いわゆるパスワードリマインダとかパスワードリセットとかいうやつです。
今回はCakePHPを使用し、それを作ります。

#いろいろなパスワードリマインダの方法#
##管理者向けパスワードリセット機能##
利用者は、パスワードを忘れた場合、管理者に問い合わせて対処してもらいます。
しかし、通常パスワードはハッシュ化されていて管理者さえもパスワードを知ることができないので、
通常はパスワードを再設定する方式が取られます。(今のパスワードがそのまま通知方式が採用されているならやばい)

パスワード再発行の順序として、

1. 問い合わせを受付、利用者の本人確認
2. 管理者がパスワードをリセットして、利用者に仮パスワードを伝える
3. 利用者は仮パスワードでログインして、直ちにパスワードを変更する

となります。

##利用者向けパスワードリセット機能##
こちらは利用者自らがパスワードをリセットします。
管理者向けパスワードリセット機能はすべ

元記事を表示

PHP基礎 Part1

# 概要
PHPの独学で学んだ内容をアウトプットしていく

## PHPとは
HTMLを動的に表示させ、サーバー側で処理を実行することに適した言語(見る人や時間に応じてテキストが変化する)
HTMLで記述したWebページは静的なコンテンツとなる = 逐一運用しない限り、いつどこで誰が見ても同じ内容となる

## PHPの用途
主にWeb系サービスの開発で使用されるプログラミング言語
ブログ、SNS、ECサイト、お問合せフォーム、各種サービスのログイン画面..etc

## PHPの書き方
HTMLにPHPのコードを埋め込んで書くことができる。
他にも外部ファイルを呼び出す形式があるとのことだが、今回は省略。
尚、ファイル名は「〇〇.php」とする

## PHPの基礎文法と文字列の出力
PHPの文法の最低限満たす必要のあるルールは以下の2つ

1.開始タグと終了タグ
PHPは開始タグ__「」__」で終える。

2.コードの末尾にセミコロン「;」を記述
コードの末尾に__セミコロン「;」__を書かないとエラーになる
※可読性を考慮してタブ、半

元記事を表示

2019年phpカンファレンス① ~MVCとはなにか~

2019年phpカンファレンスでの『MVCとはなにか』の講演について、思ったことをまとめてみました。

# 講演資料

# この講演を聞いたきっかけ
この前プライベートでLaravelを触ってみました。
会社のシステムは違うフレームワークでやっているため、結構新鮮だったとともに「model」の考え方が全然違った。

今までmodelは「いろんなところで使っている関数をまとめる場所」というイメージでした。
そのため、DB接続系の処理も書いていたが、Laravelでは書かない。みたいな記述を見つけて、「modelって何書けばいいんだろう、、、」と思っていました。

そこで、modelの概念について勉強しようと思い、この講演を聞いてみました。

# 講演を聞いて

「modelってなに、、、?」

という疑問がより深まりました(笑)

なぜそうなったかは、これからゆっくり書いていきます。

# 内容(解釈をかなり入れております)
### システム作ってよ!
大体のシステム開

元記事を表示

PHP カンファレンス 2019 登壇資料まとめ

# PHP カンファレンス 2019
https://phpcon.php.gr.jp/2019/

# タイムテーブル
https://fortee.jp/phpcon-2019/timetable

# 登壇資料
敬称略

## Track 1

**PHPの今とこれから2019**
廣川 類

**コミュニティアップデート powered by GMOインターネット**
GMOインターネット株式会社

**思想と理想の果てに — クリーンアーキテクチャのWEBフレームワークを作ろう**
成瀬 允宣

[PHP Conference 2019]思想と理想の果てに――クリーンアーキテクチャのWEBフレームワークを作ろう

**PHPUnit: Past, Present and Future**
Sebastian Bergmann

**オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法**
徳丸浩

## Track 1 – LT

**Laravel + Nuxt.js

元記事を表示

Docker+Laravel+OpenAPIGenerator

## はじめに

[OpenAPIGenerator](https://github.com/OpenAPITools/openapi-generator)を使って生成されたLaravelのソースコードで環境構築してみました。
DockerでLaravel環境の構築~スタブサーバの生成、リクエストの確認まで行います。

**プロジェクトディレクトリ構成**

“`bash
project/
├ www/ # Laravel Project Container
├ generator/ # generator Container
├ docker-compose.yml
├ oas.yml
“`

## Sample OAS

プロジェクト直下に`oas.yml`を用意します。
簡易的なCRUDが行えるAPIを想定しています。

“`yaml:oas.yml
openapi: 3.0.0
info:
title: Task API
version: 0.0.1
servers:
– url: http://lo

元記事を表示

PHPカンファレンス2019 当日レポ

## 公式サイト
https://fortee.jp/phpcon-2019
今年は`Beyond`がテーマになっています。

## PHPの今とこれから2019
### 資料: https://www.slideshare.net/hirokawa/presentations

– 歴代のスライド資料あげました
– https://www.slideshare.net/hirokawa/presentations
– PHP7.4の次は8
– 2021年の後半(9月?)にリリースかも
– PHP7.xは80%程度利用中(会場内アンケート)
– データではPHP7.xは4割程度
– PHP5.xは57%(昨年は75%)
– 今年出たバージョンは3年後にはEOL
– 7.1のEOLは今日(2019/12/01)
– CVEが付いている修正はセキュリティの修正なので速やかにバージョンアップしたほうがいい
– PHP7.4は7.3より15%程度ベンチマークが改善
– ※体感はあまり変わらないが
– PHP7.4
– TypeHintingの追加
– Null許

元記事を表示

WordPressのwpForo Forum(掲示板プラグイン)を解析して旧サイトから移行してみた

#1.はじめに
もともと20年ほど旧サイト「[らららのプログラマーズラウンジ](http://rarara.cafe.coocan.jp/)」を運営していたのですが、XServer,WordPressのサイトへ引っ越ししました。これを機に(いまどき?になりますが)CGIの掲示板からWordPressのwpForo Forum(掲示板)へ移行しました。

(移行先は、[こちら](https://rarara.org/community/)です。6万件弱の書き込みが移行されたことが確認できます)

[![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175210/1fa6b9d3-2cd1-c6dd-258d-17ea064e5782.png)](https://rarara.org/community)

 旧サイトは約20年ほどの掲示板書き込みデータがあり、もちろんそのデータを移行する必要があるのですが
 標準で移行方法が用意されておらず、自力で「wpForo Forum」を解析して移行しました

元記事を表示

カンファレンスに初めて行ってみた

# はじめに
2019年12月1日にあったphpカンファレンスに行った。

https://phpcon.php.gr.jp/2019/

恥ずかしながら、エンジニア4年目にしてまだカンファレンスとか行ったことなかったため、ちょっと緊張しつつも、参加したので、

– 初めて勉強会とかカンファレンスに行く予定の人
– 行ったことないけど、行ってみたい人

向けになればと思い、ちょこっと書く。

# カンファレンスとは
要は勉強会。大学の特別講義をイメージしてもらうのがいいかも。

今回のphpカンファレンスの場合、phpに関すること、開発環境について、システム設計に関わることなどphp関連のあれこれをテーマにした講演がある。

また、企業でブースを出しているところもあり、各企業のところに行けば、登壇した人からお話を聞くことも可能(っぽい。今回自分は用事があったため、行かなかった。)

# 行ってよかったこと
### 刺激になる
自分より全然できる人たちが、自分に向けて話してくれるので、勉強になる。また、自分の周りにいるエンジニアたちと話していると、どうしてもその世界に凝り固まって

元記事を表示

PHPでREPLを使うにはphp -a

# 実際の動作

“`terminal:ターミナル
~ $ php -a
Interactive shell

php > $var = “JavaScript”;
php > echo $var;
JavaScript
“`

## 対話形式で実行結果を見られる
デバッグとか、ちょっとしたサンプルコードの動きを見るとき
いちいちphpファイルに書くのは面倒ですよね。
そういう時、このようにすればすぐに結果が見られます。

## PHPでは使っている人が少ない?
あまりPHPでREPLを使っている人は多く無い印象。
私の知識不足かもしれませんが。
便利なので非常にオススメです。

元記事を表示

【もう悩まない!】WordPressのexcerptやtitle文字数操作の奥義をお教えしますよ

みなさんwordpressで開発をしていて、よくタイトルや抜粋文の文字数制限や、末尾を…にしたりしますよね。

そしてやり方をググると、例えば抜粋文なら大抵このようなコードを目にするかと思います。

“`php
function twpp_change_excerpt_length( $length ) {
$length = 50;

if ( is_category() || is_tax() ) {
$length = 100;
}

return $length;
}

add_filter( ‘excerpt_length’, ‘twpp_change_excerpt_length’, 999 );
“`

これはページごとに抜粋文の長さを変えられるコードですね。
excerpt_lengthフィルターを使っています。

“`php
function twpp_change_excerpt_more( $more ) {
return ‘……’;
}
add_filter( ‘excerpt_more’, ‘twpp_ch

元記事を表示

PHPカンファレンス2019基調講演まとめ

qnote アドベントカレンダー第1日目は、ちょうど PHP カンファレンス2019の開催日という事もあり、現地からの採れたてレポートをお送りしたいと思います。

![8ADF5D24-FCAC-4401-B272-D6E233105B4C.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6102/357ac9d2-b5a2-c251-d6f0-315f00d87f99.jpeg)
*採れたての elePHPant (3,000円) 。経費で落ちる?*

#PHPカンファレンス2019
今年はいつもよりも遅めの12月開催。ちょうど11月29日にPHP7.4がリリースされ、またPHP7.1が EOL を迎えた日でもあります。
毎年おなじみの大田区産業プラザにて19年目20回目の開催。

![8B5C7269-F8AE-479E-AAAC-C26EFC14C8B9.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6102/d

元記事を表示

OTHERカテゴリの最新記事