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

PHP関連のことを調べてみた2020年03月26日
目次

Mac Laravelのライブラリ「laravel-dompdf」を日本語表示に対応させる

# 目的

– Laravelにライブラリ「laravel-dompdf」を入れたが、日本語化されない問題があったため改善する

# 実施環境

– ハードウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| OS | macOS Catalina(10.15.3) | |
| ハードウェア | MacBook Air (11-inch ,2012) | |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 | |
| メモリ | 8 GB 1600 MHz DDR3 | |
| グラフィックス | Intel HD Graphics 4000 1536 MB | |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | |
| Laravel バージョン | 7.0.8 | |

– ライブラリ環境

| 項目 | 情報 | 備考 |
| — | — | — |
| laravel-dompdf | v0

元記事を表示

EC-CUBE4 プラグインの作り方 ~ セットアップからインストールまで

## EC-CUBE4向けプラグインの作り方
プラグインは、`composer.json`だけあれば作れる。

まずは`MyPlugin`というフォルダを作って、その中に`composer.json`ファイルを入れる。

必要な設定項目は、name、version、desctription、codeのみ。他は固定。

`app/Plugin/MyPlugin/composer.json`

“`json
{
“name”:”ec-cube/MyPlugin”,
“version”:”1.0.0″,
“description”:”my plugin”,
“type”:”eccube-plugin”,
“require”: {
“ec-cube/plugin-installer”: “~0.0.6”
},
“extra”:{
“code”:”MyPlugin”
}
}
“`

## 作成したプラグインをインストールする
プラグインをインストールするにはコマンドラインを使うか、いったん圧縮して管理画面からインストールする。

“`
//

元記事を表示

少し奇妙なPHPの不等号

ひょんな拍子に、PHPの不等号に関する恐ろしい事実を発見してしまいました。

## まずは穴埋め

“`php
$a = (略);
$b = (略);

if($a < $b && $b < $a) { echo 'まさかこんなところには来ないよね'; } ``` 実は、`$a < $b && $b < $a`という式を成立させてしまう方法が存在します。 ## 配列の比較 ふつうの変数であれば比較基準は1通りなので、`$a < $b && $b < $a`なんていう事態に陥ることはないのですが、そうは問屋が卸さないのがPHPです。PHP標準で、**配列**にも比較基準を用意しています([PHPマニュアル](https://www.php.net/manual/ja/language.operators.comparison.php))。 * 配列の要素数が異なる場合、要素数が少ないほうが小さい * 要素数が同じ場合、キーを順に比較していって中身の大小で比較する(同じキーがなければ判定不能) そして、PHPの連想配列はキーの順序が保存される、ということで、「同じキーがある

元記事を表示

PHP ユーザー関数定義 引数 スコープ などなどメモ

##記事を書いた人
PHP勉強中の初心者です。
はじめてユーザー関数を使ってコードの短絡化に挑戦した時に混乱したことをまとめてみました。

###記事の対象者
自分と同じような初心者の方のお役に立てればと思います。

##開発環境
PHP 7.3.11
OS macOS Catalina ver. 10.15.3

##関数とは
変数を「値を入れる箱」というならば、関数は「一連の処理を入れておく箱」のようなイメージでしょうか。

関数には2種類あります。
1. 組み込み関数
2. ユーザー定義関数

組み込み関数とは、PHPに元々用意してある関数のこと。例えばmb_strlen()とかisset()とか。
膨大な数の関数が用意されています。

ユーザー定義関数とは、自分で作る関数です。
作成するメリットとしては
1. 繰り返し登場する処理を何度も書かずに済む
2. 繰り返し登場する処理に編集が必要になった際、関数化してあれば関数を編集するだけで済む
3. コードの短絡化が出来て、可読性が上がる
といったところでしょうか。

“`php:function.php
functio

元記事を表示

【Laravel】 From句にサブクエリを使用する

# 結論
laravel 5.6.3から
joinSub、leftJoinSubが使える.

“`php
$subQuery = ProfileUserView::select([‘user_id’, ‘company_id’])
->whereBetween(‘created_at’, [$from, $to])
->distinct();

$mostViewQuery = \DB::query()
->selectRaw(‘company_id, COUNT(user_id) AS pv’)
->fromSub($subQuery, ‘sub’)
->groupBy(‘company_id’);
“`

## ver 5.6.3以前
それより以前は mergeBindings使う.

https://github.com/laravel/framework/issues/19711

“`php
$count = DB::table( DB::raw(“({$sub->toSql()}) as sub”) )
->merge

元記事を表示

【Laravel】 base64エンコードされた画像を保存する

“`php
/**
* 画像保存
* @param string $base64Context
* @param string $storage
* @param string $dir
* @return App\Models\Image
*/
public function storeImage($base64Context, $storage, $dir)
{
try {
preg_match(‘/data:image\/(\w+);base64,/’, $base64Context, $matches);
$extension = $matches[1];

$img = preg_replace(‘/^data:image.*base64,/’, ”, $base64Context);
$img = str_replace(‘ ‘, ‘+’, $img);

元記事を表示

セッション

“`値の保存
Request->session()->put(‘キー’, 値);
“`

“`値の取得
$変数 = Request->session()->get(‘キー’);
“`

sessionの格納先は
“`strage/framework/sessions“`になる。

##データベースでセッションを使う
下記設定に変更する

“`config/session.php
‘driver’ => env(‘SESSION_DRIVER’, ‘database’)
“`

“`.env
SESSION_DRIVER=database
“`

###コマンド実行
“`
php artisan session:table
“`

マイグレーションファイルが作成されるので“`php artisan migrate“`すればDBでセッションを扱えるようになる

元記事を表示

PHPでは関数の引数が多くてもエラーにならない

phpでは関数に引数を渡すときに定義されている数より多くてもエラーにはならないようです。

“`php
first:second

// 3つの引数だと呼び出せる
twoArgumentFunction(‘first’,’second’,’third’);
// => first:second
“`

引数の数が少ないと「Fatal error」が発生します。

“`php
// 1つの引数で呼び出すとエラーになる
twoArgumentFunction(‘first’);
// Fatal error: Uncaught ArgumentCountError: Too few arguments to function twoArgumentFunction(

元記事を表示

Elastic BeanstalkでのLaravelにてstorageへのシンボリックリンクを張る方法

# はじめに
Elastic BeanstalkでのLaravelにてstorageへのシンボリックリンクを張る方法で手こずったので備忘録です

# TL;DR
container_commandsにて「ln」を使用して、相対パスでシンボリックリンクを貼りました

# コード
“`.ebextensions/commands.config
container_commands:
0x_storage_link:
command: “ln -s ../storage/app/public storage”
cwd: “/var/app/ondeck/public”
“`

# 最後に
他に良い方法がありそうですが。。。

# 補足
「php artisan storage:link」でシンボリックリンクを貼ると絶対パスになりました。(参考サイトと同事象)

# 参考
[php artisan storage:link linking wrong directory](https://stackoverflow.com/questions/52288807

元記事を表示

Goodby/CSV 大量にデータをインポートすると、マルチバイト文字列が欠落する場合がある

自分用の備忘録

### 何が問題か

私が教えてほしいです。

大量に(400行ぐらい)データをインポートすると、1~数行、
日本語文字列が一文字(3バイト分)だけ欠落するという事象が発生した

原因は不明。誰か教えて

### 直し方

これを

“`
$config->setFromCharset(“UTF-8”);
“`

こうすれば直った

“`
$config->setFromCharset(NULL);
“`

### ソースコード

“`
/**
* Import Csv By Goodby\CSV Parser
* このメソッドはCSVの読み込みのみを担当し、加工はコントローラー側に任せる想定
*
* @param string $filePath
* @return array
* @link https://github.com/goodby/csv
* @link https://nori-life.com/laravel-csv-import-goodbycsv/

元記事を表示

WordPress ページによって読み込むcssを変える

#はじめに
wordpressでページごとに読み込むcssを変えたい!と思う事があるかもしれません。

実はphpの条件分岐を使えば、簡単にできるのです。:cop:
**今回は固定ページごとに**、読み込むcssを変える方法を紹介

#スラッグ(Slug)を確認
まずは固定ページのスラッグ(Slug)を確認

スクリーンショット 2020-03-25 18.55.29.jpg

`固定ページ一覧>クイック編集`から確認できるかと(無理だったら目的のページの編集画面まで行こう)

#header.phpで条件分岐

“`php:header.php

.省略
.
.
『NHKニュース速報』を取得して表示する

#はじめに
この記事は、日本の公共放送NHKのニュース速報を取得し、PHPで表示する方法を掲載しています。
**過度な取得は、提供元のサーバに負荷をかけることとなりますので、絶対にしないでください。**
また、あくまで取得して表示するまでの方法を掲載しています。表示デザイン等は一切考慮しておりませんので、ご了承ください。

#仕組み
NHKのニュースサイト「NHK NEWS WEB」のバックグラウンドで動作している「sokuho_news.xml」にアクセスし、データを取得します。
その後、echoを使ってデータを表示します。

#ソースコード
“`php:BreakingNews.php

    report->line as $line): ?>

Laravelを利用したWebアプリ制作を学べる教材まとめ

はじめに

あらゆる教材に手を出すと、結局この教材はどういうことが学べるんだっけ??と失念しがちなので自分用に作ってみました。

※随時更新予定※

Techpitの教材編

Laravel(+Vue.js)でSNS風Webサービスを作ろう!

ページリンク
https://www.techpit.jp/p/laravel-vue-sns

完成見本サンプル(※私がデプロイしたもの。Mail機能のみ未実装。)
http://laravel-vue-sns.herokuapp.com/

開発環境

Mac,Docker(Laradock)

PHP 7.3、Node.js 10、Vue.js 2.6.11、Laravel 6.8、Postgr

元記事を表示

【PHP】PHPUnitインストールからテスト実行まで

環境
PHP 7.4.3
Composer 1.10.1

##PHPUnitインストール

既にcomposerを入れてるので、コマンドからインストールするだけでした。

“`
C:\php>composer require phpunit/phpunit –dev
“`

word | description
— | —
composer | PHPのパッケージ管理ツール
require | npmでいうところのinstall
dev | ローカルにインストールするオプションコマンド

コマンド実行すると、composer.jsonの”require-dev”に追加されます。

“`json:composer.json
{
“require”: {},
“require-dev”: {
“phpunit/phpunit”: “^9.0”
}
}
“`

バージョンを確認してみます。

“`
C:\php> vendor\bin\phpunit –version
“`

conmoserでインストールするとph

元記事を表示

初心者|docker-compose|PHP+ Nginx + MySQL

docker-compose.ymlファイル**だけ**でphp環境を簡単に構築できないかと思い、調べて見ました。(残念ながらdocker-compose.ymlファイル**だけ**ではダメでしたが…)

# リスペクトな記事
この記事を作成するにあたり、参考にさせていただいた記事です。
本件、同様の既存記事を踏襲する内容となります。

[DockerによるPHP開発環境構築(PHP + MySQL + Nginx)](https://qiita.com/nemui_/items/f911be7ffa4f29293fd5)
[Docker + Nginx + PHP-FPM なら40秒くらいで環境を準備できる docker-compose が楽しくなってきました。](https://qiita.com/mochizukikotaro/items/b398076cb57492980447)

# したいこと
dockerを使って、ローカル環境でphpを使いたい

# したこと
## 1) docker-compose.yml の用意
下記、コピペでOKです

“`yml:docke

元記事を表示

composer install できない

# composerがインストールできないときの解決した方法

## 解決法
https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode

ここに飛ぶ

手順に沿って解決

## MacOSの場合
IPv6の設定が正しくされていないらしい、、、

1. ネットワーク機器の名前を確認(たぶんWi-Fi)
networksetup -listallnetworkservices

2. 一旦、IPv6を無効にする(Wi-Fiの場合)
networksetup -setv6off Wi-Fi

3. 再度IPv6を設定する
networksetup -setv6automatic Wi-Fi

4. composer installを実施

元記事を表示

Laravel 新規プロジェクト作成手順(laravel コマンドが使えなかったとき、composerコマンドでやってみよう)

# Laravel 新規プロジェクト作成手順

今回は、プロジェクト名を「laravelapp」にしています。
ここは、ご自身の指定したプロジェクト名に変更可能です。

“`
laravel new new-project laravelapp
“`

上記のコマンドが上手く動作しなかった場合、下記のコマンドを実行してみてください!!

“`
composer create-project laravel/laravel laravelapp –prefer-dist
“`

元記事を表示

CodeIgniterのget_instance()についてまとめた

## はじめに
今回新たに参画したプロジェクトでCodeIgniterが使われていたので勉強がてらまとめてみました。
フレームワークの中身を読んでいると`get_instance()`にたどり着いたので今回はそれを題材にして記事にいたしました。

## get_instance()
コントローラのメソッド内でインスタンス化されるクラスは全てCodeigniterのネイティブリソースにアクセスできます。
`get_instance()`関数を利用することによってシンプルに書くことが可能になります。

– 返り値
– コントローラのインスタンスへの参照
– 返り値の型
– CI_Controller
– 関数の役割
– メインのCodeIgniterオブジェクトを返す

通常、Codeigniterの利用可能なメソッドを呼び出すには`$this`を使う必要があります。

“`
$this->load->helper(‘url’);
$this->load->library(‘session’);
$this->config->library(‘base_url’)

元記事を表示

Laravelのライブラリ「laravel-dompdf」を使ってビューの表示をPDFとして表示しよう

# 目的

– ライブラリを使用して現在のビューとして表示しているコードをそのままPDFで表示する方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Air (11-inch ,2012) |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 |
| メモリ | 8 GB 1600 MHz DDR3 |
| グラフィックス | Intel HD Graphics 4000 1536 MB |

– ソフトウェア環境

| 項目 | 情報 |
| — | — |
| PHP バージョン | 7.4.3 |
| Laravel バージョン | 7.0.8 |

– ライブラリ環境

| 項目 | 情報 | 備考 |
| — | — | — |
| laravel-dompdf | v0.8.6 | アプリ名ディレクトリに移動後コマンド`composer show -i | grep

元記事を表示

laravel5.5 配列を用いたページネーション

##今回の題

Eloquent モデルとクエリビルダに対しては paginate() メソッドを使えばあっという間に実装できる。
めちゃくちゃ簡単で便利。

が。
配列を使ったページネーションはどうやるんだ?と考えたときに少し苦労したので自分用にメモ。
Twitter apiで遊んでいて、取得したツイートをページ上で一覧表示させたくて使いました。

##方法

LengthAwarePaginatorを使います。
~~公式のリファレンスに情報が少なすぎ……。~~

“`php
use Illuminate\Pagination\LengthAwarePaginator;

//配列($array)をコレクションに変換
$array = collect($array);
$array_result = new LengthAwarePaginator(
$array->forPage($request->page, 20),
count($result->statuses),
20,

元記事を表示

OTHERカテゴリの最新記事