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

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

PHP の json_encode($hoge, JSON_FORCE_OBJECT) の JSON_FORCE_OBJECT ってなんだっけ

## json_encode() とは
https://www.php.net/manual/ja/function.json-encode.php

“`php
json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] ) : string
“`

**`$value` をJSONにして返します。**
で、その第二引数の `JSON_FORCE_OBJECT` ってなんだっけ?と思ったのでメモ。
(そのほかのオプションもまた出会ったら追記していくかも)

## そもそも第二引数( `$options` )って何?

`JSON_FORCE_OBJECT` などのビットマスク。(どうやって出力するか、的な?)
そのほかの各定数の意味については [JSON 定数のページ](https://www.php.net/manual/ja/json.constants.php) に記載あり。

### で、 `JSON_FORCE_OBJECT` の意味

配列をオブジェクトとして返してくれる。

> *

元記事を表示

PHP Invalid argument supplied for foreach() .. errorの対処法

#Invalid argument supplied for foreach() ..のエラーの簡単な対処法について

エラーの原因は
「Invalid argument supplied for foreach() :foreachに使えない変数を使っていることなので

foreach()に合わせて、変数を修正すれば大丈夫です。

ちなみにforeach()が使える引数の説明は

「foreach は、配列を反復処理するための便利な方法です。 foreach が使えるのは配列とオブジェクトだけであり、 別のデータ型や初期化前の変数に対して使うとエラーになります。 この構造には二種類の構文があります。」(foreachの使用方法)

と明記されているので、配列かオブジェクトのどちらかに合わせてあげればオッケーです。

“`
foreach((array)$data as $value){

}
“`
の様に変数

元記事を表示

OneSignalで特定のユーザーにWEBプッシュ通知を送る方法(PHP編)

[OneSignal](https://onesignal.com/)は無料で使いはじめることができるプッシュ通知配信サービスです。(WEBプッシュは3万ユーザーまで。モバイルは無制限で)
スクリーンショット 2019-11-26 11.41.10.png
こちらを使うと驚くほどかんたんにプッシュ通知を送れました。今回はLaravelにてOneSignalを使ってWEBブラウザ向け(Chrome、Firefox)にプッシュ通知を配信する方法をまとめます。

# OneSignalでアプリを作成
スクリーンショット 2019-11-26 11.43.06.pngPHPのCountableインタフェースで配列以外をcountする

この記事は「[GameWith Advent Calendar 2019](https://qiita.com/advent-calendar/2019/gamewith)」の3日目の記事です。

## 概要
PHPの`count()`は、配列の個数を数えるときによく使う関数です。ただ実は配列以外も数えることができます。
それがタイトルにも書いた、「[Countableインタフェース](https://www.php.net/manual/ja/class.countable.php)」です。このインタフェースを実装したオブジェクトも`count()`することができます。意外と情報が少なそうだったのでまとめてみました。

## 使い方
`Countable`を実装したクラスに対して、`count()`メソッドを定義します。

“`php
class MyCountable implements Countable
{
private $num = 255;

public function count()
{
return $this->num

元記事を表示

WP All Export pluginで出たエラーを解決する with php72

## 背景
最近、Wordpressの制作依頼が多い。
Wordpressは開発だけではなく、コンテンツもセットで納品する前提なのが辛いですが、大量のコンテンツ入稿に役立つcsv入力・出力ができると、大量のコンテンツの操作が楽になります。
昔は、[Really Simple CSV Importer](https://wordpress.org/plugins/really-simple-csv-importer/) にお世話になってましたが、最近は、メンテされていないため、使えなそう。。。

そこで、探したらありました。

[WP All Import](http://www.wpallimport.com/)
**WordPress XML Import. WordPress CSV Import. Easy.**

[WP All Export](http://www.wpallimport.com/export/)
**Export anything in WordPress to CSV, XML, or Excel.**

## 問題
WP All Export の方は、有

元記事を表示

EUC-JP環境でphpのstr_replaceを使い全角スペースの置換でバグが発生する件

#はじめに

表題の通り、本記事は以下の状況にて発生する現象のTipsとなります。
– 文字コードがEUC-JPである環境で
– phpのstr_replace関数を使用し
– 全角スペースを置換した場合
– 想定していない単語まで置き換わってしまう

#発生した現象
DBに入っている値がなんだかおかしい、というところからスタートした。
「ァー」が「ゼ」に代わって保存されているらしい。
クリストファーがクリストフゼといった具合。
プログラムを追っていくと、どうやらDBに値を投入する前の処理がおかしくなっている模様。

“`
$trimmed_str = str_replace(“ ”, “”, $str);
“`

結論として、「全角スペースを置換すると’ァー’という文字列が影響を受ける」という現象だった。

#原因
環境の文字コードがEUC-JPであることが原因だった。
EUC-JPはマルチバイト文字であり、全角文字は複数の16進数の組み合わせによって表現される。
参考: https://qiita.com/mpyw/items/a8dba1b80fe68523b8eb

元記事を表示

Moodle 3.7 マニュアル – Amazon EC2 インスタンスへのインストールガイド

[原文](https://docs.moodle.org/37/en/Installation_Guide_for_Installing_on_Amazon_EC2)

# Amazon EC2 インスタンスへのインストールガイド

An ec2 instance is a virtual web server that can be rented out by the hour from Amazon. Prices vary depending on the power of the instance you rent out.

I recommend the following book for background reading on Amazon EC2 “Host Your Web Site in the Cloud: Amazon Web Services Made Easy by Jeff Barr Copyright ©2010 Amazon Web Services” This is the official Amazon book on their web s

元記事を表示

PHP 7.4 から空ファイルの MIME タイプ判定が変わる

# 概要

[`mime_content_type()`](https://www.php.net/manual/ja/function.mime-content-type.php) 関数はファイルの中身を見て MIME タイプを判定する関数であるが, PHP 7.4 で大分類カテゴリも変わる破壊的変更が入っている。

“`text:7.3
inode/x-empty
“`

“`text:7.4
application/x-empty
“`

テストをちゃんと書いてないと地味にバグの原因になりそうなので,ここに注意喚起として共有します。

# 検証用コード

“`php

元記事を表示

PHP基礎 Part4

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

# 前回の内容
[PHP基礎 Part3]
[PHP基礎 Part3]:https://qiita.com/aizawa_K/items/405735a41c18c60c9335

## 配列
変数は値を1つしか割り当てることが出来なかったが、配列の場合は複数の値を扱うことができる。
配列から値を出力する時は、配列のデータにそれぞれ割り当てられた__「インデックス」__を利用する
なお、インデックスは0から始まる

“`php:sample.php

“`

また、配列の値を追加したり、上書きする際は以下のようにする

“`php:sample.php

元記事を表示

プログミラミング学習始めて6週間、感動した関数

プログラミングを学んで**2ヶ月**が経過しました。
主にHTML, CSS, Java Script, PHPの学習をしました。
学んだ事は山のようになるのですが、その中でも今回は個人的に驚いた関数をランキング形式で記載します。
初心者のただの忘備録です。

#ベスト3 PHPの日付取得
JSしか知らない時は、日付取得って結構大変なんだなと驚きました。
書いていたコードこちら。

“`javascript
$(function() {
var now = new Date();
var y = now.getFullYear();
var m = now.getMonth() + 1;
var d = now.getDate();
var w = now.getDay();
var wd = [“日”, “月”, “火”, “水”, “木”, “金”, “土”];
const today_time=(y+”年”+m +”月”+d+”日”+”(” + wd[w] + “)”);
console.log(today_time);
$(“#today”

元記事を表示

headlessなChromeをPHPで操作する(2)

## 概要
(PHPで)headless ChromeをDevTools Protocolを使って操作してみようという[前回の記事](https://qiita.com/sarumonera/items/63a14f34e19f1cb96e87)の続きです。
前回の記事作成からおよそ2年経過していますが、2019/12現在でもたまーにストックされたりしているので書きます。

今回はフォーム操作についてです。具体的にはHTML上のtext inputに任意のテキストを入力してsubmitするという内容になります。

今回のお話を元にまとめたものが[こちら](https://github.com/nearprosmith/php-headless-chrome)にあります。

## おさらい

細かな部分は前回の記事を参照ください。ざっくりとおさらいすると、

– headlessなChromeの操作は[DevTools Protocol](https://chromedevtools.github.io/devtools-protocol)という名前で定義されている
– Chromeを起

元記事を表示

2019年phpカンファレンス②~弁護士ドットコムを作り続ける開発組織について~

2019年phpカンファレンスでの『弁護士ドットコムを作り続ける開発組織について』の講演について、思ったことをまとめてみました。

# 講義資料

# 話を聞いてみて
エンジニアにとって働きやすい環境を整えるのは大事だなぁと思いました。
プログラマが最大の力を発揮するために、十分に働ける環境を提供する。またプログラマはそれにこたえる。
この関係性をしっかりと作っていくことが大切だなぁと思いました。

# エンジニアの働きやすい環境の実現に向けて
### 技術選定の方針
エンジニアには新しい技術を知ったり使ってたりすることへの欲求は一定量あります。
それの解決として、新しい技術をどこで用いるか、最大限のリスク回避をしながらどのように進めていくか、というかじ取りは必要なんだと思いました。

「コア機能の開発」で完全に新しい技術を入れようとしても、リスクが大きすぎる。コア機能では運用をメインとして、リスクが少ないことがわかってから新技術を入れて

元記事を表示

オープンソース CMS「eZ Platform」

## eZ Platform とは
https://ezplatform.com/
eZ Platform は PHP で開発されている **オープンソース** のエンタープライズ向け **CMS** です。ノルウェー王国の [eZ Systems](https://ez.no) 社によって1999年から eZ Publish として開発されてきました。

![eZ Platform](https://ez.no/var/ezflow_site/storage/images/media/images/landing-page-animation4/683906-1-ger-DE/Landing-Page-Animation.gif)

12月1日現在の最新安定版のバージョンは [eZ Platform 2.5.6](https://github.com/ezsystems/ezplatform/releases) (LTS) 、最新開発版のバージョンは 3.0.0-beta3 です。

## eZ Platform の特徴
* 開発元企業 (eZ Systems 社) による **有償

元記事を表示

laravel初歩的シンタックスエラー

laravel覚えようとlogin機能作成中につまづいた

“`
syntax error, unexpected ‘extends’ (T_EXTENDS)
“`
シンタックスエラー起こしてたから調査

***.blade.phpファイルだから【

元記事を表示

【Laravel6】Vueがデフォルトでインストールされなくなっていた件【Vue.js】

# 前提
Laravelは5.3以降、yarn(npm)でインストールコマンドを実行すると
[vueがデフォルトでインストールされるように](https://github.com/laravel/laravel/blob/5.3/package.json)なっていました。

# package.jsonから色々消えた
Laravel6ではいくつかのパッケージがデフォルトから除外されたようで、
package.jsonの中身が[すっきり](https://github.com/laravel/laravel/blob/master/package.json)しています。
## Vue.js
[masterのpackage.jsonからvueがいなくなっていました](https://github.com/laravel/laravel/commit/fc39b073f3f61a22f1b48329e294ebb881700dbe#diff-b9cfc7f2cdf78a7f4b91a753d10865a2L23)。

2019/6/28に消されたようで、
当然、この日付以降に取得したLara

元記事を表示

PHP基礎 Part3

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

# 前回の内容
[PHP基礎 Part2]
[PHP基礎 Part2]:https://qiita.com/aizawa_K/items/7bce8c8f0c88e0ca6d92

## if文
「もし○○の場合、△△となる」といった条件に応じて、分岐が必要な場合に用いる文法
条件成立時は、{}の中の処理が実行される

“`php:sample.php
0){ // 条件式の展開
echo “変数numは0より大きい”; // 条件式を満たした為、”変数numは0より大きい”が出力される
}
?>

“`

### 比較演算子
比較元の値と比較先の値を、比較する為に以下の__比較演算子__を用いて判定する
判定時の結果が真の場合は、「true」で偽の場合は「false」と表す

| 比較演算子 | 判定基準 |
|:———–|————:|
| < | 右辺が大きい時にTrue | |

元記事を表示

PHP案件に配属されたGopherはどうGo言語と向き合うべきか

今いるチームのメインリポジトリはPHPで書かれているのでそれに接する機会が多い。
インフラはガチガチのAWSだ。
普段の個人開発で使う言語はGo一択だしインフラは google app engine にのせてきた。
全然違うじゃん、と思われるかもしれないが雇用されて働く上で技術スタックを気にしてネガティブになる必要はあまりない。
新しい技術に対して前向きな意思決定ができるチームを作れるか、一緒に働きたいと思えるメンバーに恵まれているか、プロダクトは利益を上げているか、そういったことの方がボディに効きやすい。
まぁPHPでお仕事できますか?と聞かれたら当然YESだ。
PHPなんてものは特にその存在を意識しなくても読めるし書けるので勉強するに値しない言語だ。
それがLL言語の唯一の利点であるがどうにもお行儀が悪くて治安が乱れやすい。
PHPとGoどちらが優れていますかとGopherには尋ねない方が身のためだ、お前は朝食に和食と肥溜めどちらにするか聞くのか?という顔になってしまい声に出すのも億劫だとため息をつかれるだろう。

若干言葉が荒れてしまっているがややワイルドな環境で育ったのと実は今

元記事を表示

Laravel SQLiteからMySQLに変更したら外部キー制約のマイグレーションが失敗してハマった

“`shell
>php artisan -V
Laravel Framework 6.1.0
“`

以下のusersに対して、user_idを外部キー制約として持つsubscribesテーブルを作りました。

“`php
Schema::create(‘users’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->string(‘name’);
$table->string(‘email’)->unique();
$table->timestamp(‘email_verified_at’)->nullable();
$table->string(‘password’);
$table->rememberToken();
$table->timestamps();
});
“`

SQLiteで動作していたマイグレーションだったので、そのまま`php artisan migrate`したらエラーになりました。

“`php:実行したマイグレーション
Schem

元記事を表示

WEB+DB vol.113 「[体験]ドメイン駆動設計」のサンプルを PHP で写経してみた

> この記事は、 [North Detail Advent Calendar 2019](https://qiita.com/advent-calendar/2019/northdetail) の1日目の記事です。

WEB+DB vol.113 の「[体験]ドメイン駆動設計」がとても良い記事だったので、サンプルコードを PHP で写経してみました。

それによる、DDDへの認識の変化などもまとめていきます。

以下、個人の理解の表現のため、本来の意味・意図とずれあある可能性があります。
もし「ここが違うよ」などの情報を頂けると、大変ありがたいです。

## 前提

参照元

* https://little-hands.hatenablog.com/entry/2019/10/24/web-db-press-ddd
* https://github.com/little-hands/webdbpress-2019-10-ddd
* WEB+DB vol.113 [体験]ドメイン駆動設計

上記を、 記事の内容の段階 (v1 〜 v4) に沿ってPHPへポーティングします。

## 言

元記事を表示

テストコードを書いて良かった3つの事

これは[ユアマイスター Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yourmystar)の2日目の記事です。

# はじめに

少し時間は空いてしまいますが、先々月に技術的負債の撲滅の一環として、テストコードを書きました。
それまでしっかりとテストコードを書いたことのなかった自分としては、少しチャレンジングな内容でした。
テストコードをガッツリと書いた今だから思うことは、書いた方がいい。これに尽きます。
今回は、テストコードを書いて **良かった事** を個人の見解からいくつかお話ししたいと思います。
※悪かった事、は特に感じなかったため、良かった事にフォーカスしてます。

## 前提
### 各種バージョン
– PHP
– 7.1.32
– CakePHP
– 3.6.14
– PHPUnit
– 6.5.13

### 用語
– Cake
– CakePHPを指す

# 1. アウトプットを意識する

“`php
1

元記事を表示

OTHERカテゴリの最新記事