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

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

EC-CUBE4 独自プラグイン開発 ①Dockerで環境構築 + xdebug導入

# 概要
EC-CUBE4で独自プラグインを開発することになった。
プロジェクトの最初から最後まで関わるのは初めてなので、あとで自分が振り返るために考えたことや試したことをどこかに記録しておこうと思った。
あと、忘れても問題ない状況を作って早く忘れてしまいたい。

本記事では、Dockerで開発環境を構築する手順を書く。内容は、他のメンバーに共有するために仕事中に調べてまとめたものを加筆・修正しただけ。
環境構築は、[EC-CUBE 4.0 開発者向けドキュメント](https://doc4.ec-cube.net/)の通り進めれば簡単に終わる。

# 目次
EC-CUBE4 独自プラグイン開発 ①環境構築手順 (本記事)
[EC-CUBE4 独自プラグイン開発 ②独自プラグイン開発Tips](https://qiita.com/haruna-nagayoshi/items/27108c75eaf9511f3524)
EC-CUBE4 独自プラグイン開発 ③今後も使えそうなTips、考えたこと (未投稿)

3本立てで書く予定。

# 動作確認環境
“`
Windows10 Pro

元記事を表示

今更ながらPHPでスクレイピングしてみた

###概要
LineBot作るためにPHPで初めてスクレイピングしたのでPHPでスクレイピングしたお話

『PHP スクレイピング』でgoogle様に聞くとPHPQueryというのを使うと簡単にスクレイピングができるらしいのでPHPQueryを使っていきます。

>参考サイト
https://qiita.com/nadonado/items/0ac037d90c5248b7eac3

###今回の目標
今回は送られてきた英単語に対してその英単語の例文を返すBotを作るので、英ナビ( https://www.ei-navi.jp/ )から例文を取得するpログラムを組みます。

###PHPQueryの設置
PHPQueryの公式サイト( https://code.google.com/archive/p/phpquery/downloads )
一番上のZipfailをダウンロード

zipファイルを解凍

![スクリーンショット 2020-04-30 14.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

吉田さんは通すけど?田さんは通さないミドルウェア

# 元ネタ

`utf8` から `utf8mb4` に早く乗り換えたいけどいろいろとレガシーアプリケーションには事情があるんじゃ!!!

# 実装

?田さんが会員登録しようとすると 400 Bad Request を返します。エラーメッセージはできるだけ親

元記事を表示

MAMP(FREE)のインストールから表示まで(MAC )

#MAMPとは
MAMP(マンプ)とは、ローカル開発環境に必要なソフトウェア(Apache、MySQL、PHP)をパッケージ化したもので、macOS、Windows上で動作させることが出来る。
「Macintosh」「Apache」「MySQL」「PHP」の頭文字をとってMAMPと名付けられている。

#MAMPのインストール

MAMPの公式サイトよりダウンロード(https://www.mamp.info/en/)
FREE Downloadをクリック
![MAMP1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629307/cb21cfd4-6775-619b-fdef-1f9c0e38945d.jpeg)
MAMP & MAMPPRO5.7をクリック
![MAMP2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629307/c1db7655-21e6-0df0-7184-0aa477db1074.png)

元記事を表示

「破壊的メソッド」はRuby用語なのか?

昨日、「[データサイエンティストが知るべき破壊的メソッドのすべて](https://qiita.com/ninomiyt/items/2e3fb2569427312f28cc)」という記事を書いたのですが、友人から次のような意見を貰いました。

> 微妙に気になったけど、「破壊的メソッド」「非破壊的メソッド」ってプログラミング全般でなくRuby用語で、かつ、「レシーバを変更するメソッド」っていう意味じゃない?
> もしあえて名前で呼ぶなら、inplace methodが正しそう。(日本語は見つからない)
> https://discuss.pytorch.org/t/what-is-in-place-operation/16244
> https://ja.wikipedia.org/wiki/In-placeアルゴリズム

更に、例えばpandasでも[inplaceという引数名が使われている](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html)ので、データサ

元記事を表示

Amazon PA-API が v5になって使えなくなったから、スクレイピングして強引にデーターを持ってくるVBAを作った話

## 初めに

**amazonPA-API**と**楽天ブックス書籍検索API**に書籍やCD、DVDの情報を取りに行き、記事の文末にアフィリエイトのリンクを貼るためのHTMLを生成するツールをPHPで作っていました。

ツールの仕様は、本の見出しやISBN-10で検索し、amazonのAPIから必要な情報を取得した後に、ISBNを持って楽天APIに行って、楽天からも書籍データーを取得します。それを規定のHTMLの指定の場所に挿入して、1つのHTMLの塊として書き出し、それをコピペして使うというものです。

商品画像や本のタイトル、著者情報や価格はAmazonから引用したもので、それらをクリックするとAmazonの商品ページにジャンプし、楽天ショッピング用のボタンもあり、それを押すと、楽天の該当商品の画面にジャンプします。

## ツールが動かないとの連絡
2020年3月中旬に、このツールが動かなくなったと各部署から連絡があり、調べるとAmazon PA-APIがv5にバージョンアップしていて、 `PA-API v5への移行を2020年3月9日までに実施しなかった場合、現在のPA-A

元記事を表示

PHP 正規表現

#前提
PHPにおける正規表現について記述していきます。

#本題

行頭にマッチする

“`
^
#例:^hello。行頭にhelloの文字列はこのパターンにマッチする。
“`

行末にマッチする

“`
$
#例:hello$。行末にhelloの文字列はこのパターンにマッチする。
“`

改行以外の任意の1文字にマッチする

“`
.
#例:1、hello.world。hello worldやhello-worldなどの文字列はこのパターンにマッチする。
“`

英大文字A-Zの任意1文字にマッチする

“`
[A-Z]
#例:1、a[A-Z]c。aAc,aBc,…,aZcなどの文字列はこのパターンにマッチする。
“`

英小文字a-zの任意1文字にマッチする

“`
[a-z]
#例:1、a[a-z]c。aac,abc,…,azcなどの文字列はこのパターンにマッチする。
“`

数字0-9の任意1文字にマッチする

“`
[0-9]
#例:1、a[0-9]c。a0c,a1c,…,a9cなどの文字列はこのパターンにマッチする。
“`

角括弧内に含

元記事を表示

Laravelのルーティング基本

#web.php
routes\web.php
ルーティングに関する情報の記載。

記入内容
・アドレス指定
・コントローラを指定
・コントローラのメソッドを指定

#コントローラ
Http\Controllers\コントローラ名

“`php

php artisan make::controller コントローラ名
“`

で作成する。
作成されたコントローラは、Http\Controllers\コントローラ名 に作成される。

useでrequrestやresponseやフォームリクエスト等のクラスをインポートし、メソッドの引数で読み込むことで利用可能にする。

“`php
return view(‘テンプレートフォルダ名’, 渡す値);
“`

この第1引数に読み込むテンプレートフォルダ名を記入。helloフォルダのindexファイルの場合は、hello.indexと記入する。
第2引数の値は、配列。この値をテンプレートに渡す。

#Bladeテンプレート
resourdes\views\フォルダ名.blade.php

{{$変数名}}で、コントローラ等から渡された

元記事を表示

[WIP] ヘルパ DI クラス一覧

以下は全ヘルパと実際のクラスまたは代替の一覧です。

### 配列とオブジェクト

| helper | class | method |
| — | — | — |
| Arr::* | Illuminate\Support\Arr | * |
| [data_fill](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Support/helpers.php#L122) | Illuminate\Support\Arr | add ※1 |
| [data_get](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Support/helpers.php#L137) | Illuminate\Support\Arr | get ※1 |
| [data_set](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Support/helpers.php#L

元記事を表示

laravelで、LoginController.phpがない

php artisan make:model auth
を実行し、成功したのに、

ディレクトリ app/Http/Auth の中に、LoginController.phpのファイルがありません。
ctrl+Hを押下しましたが、表示されません。
なぜでしょうか。

元記事を表示

Laravelでビュー描画前処理を行う

# Laravelのビュー描画前処理
Laravelのビュー描画前処理について書いていきます
Laravelではビューが描画される時に呼び出される処理を作成しておくことができます

# 前提条件
下記前回記事の続きです
[Laravelのレイアウトエンジンを使う](https://qiita.com/toontoon/items/d70814207c257051e75d)
本記事は上記が完了している前提で書かれています
上記記事で使用したプロジェクトを引き続き使用していきます

# Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにviewComposeメソッドを追記
`public function viewCompose()
{
$data = [‘key’ => 123456789.123456];
return view(‘sample.viewCompose’, $data);
}
`

(2) /sample/routes/web.p

元記事を表示

ブラックボックスの罠 Guzzlehttpで解決しなかった文字化けが、cURLにしたらサクッと解決した

# はじめに

APIを使う側の場合、サンプルコードなどがあれば、まずはそれに忠実な操作、処理をして疎通を確認する。

**ライブラリは便利だが、ブラックボックスになる面もあるのでトラブルの原因把握や問題解決から遠くなる危険がある。**
**ソースが公開されているのなら、それを辿るがよろし。**

# 何が起こったか?

某決済業者のAPIを使い銀行振込用のバーチャル口座のリクエストを送った時に、全角文字が含まれているとその部分だけ文字化けが発生した。
なお、クレジットカード払いなどの別手段では発生しなかった。

# 参考:当方サーバ側環境

– PHP7.X系
– Laravel5.X系
– guzzlehttp6.5.2
– システム内のデフォルトの文字コードはUTF-8

PHPやLaravelそのものは関係なくて、guzzleの中の問題(断言)

# 問題調査で発生したこと

## 途方に暮れる

文字コードをSJISに変換する必要がある
→変換しても、文字化けた後の内容が変わっただけで根本的な解決にはならなかった。

リクエストを送るときのContent-Typeが問題 

元記事を表示

Laravelのレイアウトエンジンを使う

# Laravelのレイアウト処理
Laravelのレイアウト処理について書いていきます
viewsフォルダ配下に作成したblade.phpファイルを組み合わせて1つのビューとして処理をするものです

# 前提条件
下記前回記事の続きです
[Laravelのテンプレートエンジンを使う](https://qiita.com/toontoon/items/2d6d3d6c88fa61a0c2e3)
本記事は上記が完了している前提で書かれています
上記記事で使用したプロジェクトを引き続き使用していきます

# Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにchildメソッドを追記
`public function child()
{
$data = [‘msgList’ => [“msg1”, “msg2”]];
return view(‘sample.child’, $data);
}
`

(2) /sample/routes/web.phpに

元記事を表示

Laravelのテンプレートエンジンを使う

# Laravelの描画処理
Laravelの描画処理を行うbladeテンプレートエンジンの使い方を書いていきます
@と様々な予約語を組み合わせることでいろいろな描画処理をすることができます

# 前提条件
下記前回記事の続きです
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

# Controllerにメソッド追加
1. /sample/app/Http/Controllers/SampleController.phpにtplメソッドを追記
`public function tpl()
{
$data = [‘val’ => 2,
‘parentList’ => [‘key1’ => 1],

元記事を表示

Laravel Dump Server インストールエラー Argument 1 passed to Symfony\Component\VarDumper\Server\Connection::__construct() must be of the type string

https://github.com/beyondcode/laravel-dump-server Laravel Dump Serverのライブラリをインストールしようとしたところ謎のエラーが発生してしまいました。

## 環境

– PHP 7.4.5
– Laravel 7.5.1
– Laravel Dump Server 2.7.0

## 問題

“`shell-session
$ composer require –dev beyondcode/laravel-dump-server

Using version ^1.4 for beyondcode/laravel-dump-server
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Package zendframework/zend-c

元記事を表示

CodeIgniter4でDB接続まで

インストール〜環境設定までは[こちら](https://qiita.com/kohenji01/items/a36dbbbb19bb8808d104)をご覧ください。

#DB接続テストの前にコントローラについてかんたんに説明
あなたのホストは`http://exapmle.com/`だと仮定します。

まずは、ブラウザでCI4のトップページが見えている状態にしてください。
そして、現在は`ci4tset`のディレクトリ内にいると仮定します。

“`text:ディレクトリの構成(今回出てくるファイルのみ表示)
/home/ci4test
├── .env <-- 前回作った環境設定ファイル ├── app │   └── Controllers │      └── Home.php <-- 今回操作するファイル ├── htdocs <-- 前回書き換えたドキュメントルート │   └── index.php └── writable ``` このページは`app/C

元記事を表示

【PHP】CSVの特定列を取得する

## 目的
CSVを読み込み、カラム名で指定した値を取得したい。

## 環境
Windows 10 Home 64bit
XAMPP Version 7.3.11
(PHP 7.3.11 (VC15 X86 64bit thread safe) + PEAR)

## 対応
CSV用のクラスを作成して対応しました。
説明はコメントとして記載しているので、割愛します。
以下、ソースコードです。

#### CSVハンドリングクラス

“`php
/*
* CSV分割クラス
*/
class csv_handle
{
private const ENCODING = ‘UTF-8’;
private $header = array();
private $data = array();

/**
* 引数の文字列をデリミタで分割した配列を取得する
*
* @param string $line 分割対象の文字列
* @param string $delim デリミタ(区切り文字)
* @param s

元記事を表示

PHPでのMySQL (データベース)接続 PDO

##PDOとは
PHP Data Objectsrの略称
PHPからデータベースのアクセスを抽象的にしてくれるもの

###PHPからMySQLに接続するコード例(SELECT文)
“`php

query($select);

} catch (PDOException $e) {
echo ‘接続エラー: ‘ . $e->getMessage();
}

?>
“`

元記事を表示

注意!あなたのWordPressも狙われている!?侵入手口と挙動について

皆さんが当たり前のように使っているWordPressには,実は**脅威**が存在します。
乗っ取られると素人ではなかなか解析できないような複雑な改ざんが行われて,復元しないとページが見られなくなります。
今回はそのハッキングの一例を取り上げます。
「こっちはセキュリティ対策してるから大丈夫」ってわけにはいかないみたいですよ…

# まえがき
該当する事例が前にあったようです。
https://qiita.com/mikkame/items/eec33df6863ed81740c2

# 侵入経路
不明。
どこから入ってきたのかは分かりませんが,恐らくテーマやプラグインを脆弱性を突き**XSSを利用してPHPコードを実行させて環境を整えた**と見られます。

# 挙動
この例としては

– /wp-load.php
– /wp-blog-header.php
– /index.php
– /wp-content/themes/twentyfifteen/inc/index.php
– /wp-content/themes/calliope/inc/index.php

が不正に書き

元記事を表示

raspberrypiとESP32を使った自分でIoTプラットホーム作成(その2)~ESP32設定編Lチカ

#ESP32の設定
家に転がっていたESP32の動作確認をしました。
Arduino-IDE ver1.8.10を使ってESP32ボードを認識させて下記コードを実行します。
LEDが点滅したら成功です。LEDの+と接続するpinの場所は任意です。

ちなみにLEDが壊れていて2回目で成功しました。

“`
void setup() {
// put your setup code here, to run once:
pinMode(33,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(33,HIGH);
delay(500);
digitalWrite(33,LOW);
delay(500);
}
“`

元記事を表示

OTHERカテゴリの最新記事