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

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

#wordpressを知らないPHPエンジニアあるある

ツイッターで [#wordpressを知らないPHPエンジニアあるある](https://twitter.com/hashtag/wordpress%E3%82%92%E7%9F%A5%E3%82%89%E3%81%AA%E3%81%84PHP%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%82%E3%82%8B%E3%81%82%E3%82%8B?src=hashtag_click) を書いているのですが、ツイッターだと流れてしまうので纏めています。

【Laravel開発ノート】ドメインを設定するポイント

##1.目的
ローカル環境で「http://192.168.10.10/」→「http://weibo.test」と表示したい。

##2.設定のポイント
###2.1 「.env」ファイル

“`
APP_DEBUG=true
APP_URL=http://weibo.test
“`

###2.2 「homestead.yaml」ファイル

“`yaml
sites:
– map: weibo.test # <--- ここ! to: /home/vagrant/code/Laravel/public ``` ###2.3 「/etc/hosts」ファイル ``` $ vim /etc/hosts ``` 最後の一行に以下の内容を追加 ``` 192.168.10.10 weibo.test ```

元記事を表示

AndroidでPHPにjsonを送受信する

#Androidでjsonを送受信する
この記事は調べながら作ったサンプルを自分用にまとめたものです。

AndroidでPHPにjsonを送受信するアプリを作ります。
例として、Androidで入力した文字列二つをPHPに送り、PHPで受け取った文字列を連結した後Androidに送り返します。
完成したアプリは以下のようになります。

Screenshot_1574675979.png

#Androidのコード

layoutのidは

+ 二つのEditTextはeditText1とeditText2
+ ボタンはsubmit
+ 結果の表示TextはtextResult

としたときのMainActivityは以下のようになります。

“`MainActivity.kt
class MainActivit

元記事を表示

【Laravel】メール送信失敗時のログを残す

Laravel で複数のメールアドレスへの送信処理を書いた時、メール送信が失敗したアドレスの一覧を取得したかったが、ドキュメントには載っていなかったのでメモとして残しておく。

## 環境
Laravel 6.X

## やり方
`Mail::failures()` で送信失敗メールアドレスが配列で取得できる。([参考](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Mail/Mailer.php#L541))
例えば、Mailable クラスの設定後、送信処理をコントローラに書く場合、下記のような感じ。

“`MailSendController.php
namespace App\Http\Controllers;

use App\Mail\SampleMailableClass;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use Log;

class MailSendController extends C

元記事を表示

PHP の Error/Exception の分類方法やまとめ方を考えてみたときのメモ。

## LogicException と RuntimeException の各子クラスの関連

Logic | Runtime | 意味
:– | :– | :–
Domain | Range | 変数が、事前に定義された範囲から逸脱してる。
Out Of Range | Out Of Bounds | 無効なインデックス、キー。
Invalid Argument | Unexpected Value | 関数側か、関数の呼び出し側か。
Length | Overflow / Underflow | すでに長さが変だった / 操作したら長さが変になる。

## Domain と Range

単純に、Logic Exception か Runtime Exception か。

Domain は「事前に定義された、過不足なくすべて列挙されたドメインデータの一覧」に含まれない、という例外。

Range は「全て列挙するのは難しいのだけれど、事前に定義された、境界が明確なデータの範囲」から逸脱する、という例外。

正直、この2つについてはもっと根本的な解釈を間違えている可能性がある

元記事を表示

preg_matchが2を返す

# https://bugs.php.net/bug.php?id=78853

[preg_match](https://www.php.net/manual/ja/function.preg-match.php)は、パターンにマッチした場合は1を、マッチしなければ0を、エラーが発生したらfalseを返します。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/9894f7a5-617f-5e43-0d63-3b07558193c0.png)

ということでこんな正規表現を試してみましょう。

“`php
var_dump(preg_match(‘/^|\d{1,2}$/’, “7”));
“`

[結果](https://3v4l.org/m49BV)

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/2d4b0286-aa7e-b8f0-4402-3ae777028a9

元記事を表示

wordpress ACFのちょっとした使い方

案件で、初めてwordpressの構築を任せていただきました。勉強になることばかりで楽しんでいます。
自分の整理がてら、学んだことをまとめてみます。

# ACF
言わずもがなのwordpressプラグイン。カスタム投稿実装時には、ないと辛い。

# 基本
簡単にですが、実際に使用したものを中心にまとめていきます。

## the_field();
フィールドの値を出力する際に使用する。

## get_field();
フィールドの値を取得する際に使用する。
取得した値を表示する際は、`echo`で出力する。

“`php

元記事を表示

PHPからSlackに通知するシンプルな方法

# 流れ
1.Slack App を作成する
2.PHPにコードを記述する

# Slack App の作成

## Slack App の新規作成
https://api.slack.com/
上記URLにアクセスし、画面真ん中の「Start Building」をクリックする。

「App Name」:アプリの名前を入力
「Development Slack Workspace」:アプリを導入するワークスペースを選択

## Slack App の設定
「Basic Information」→「Display Information」でアプリのアイコンや色を設定できる。

「OAuth & Permissions」→「Scopes」で「Add an OAuth Scope」をクリックする。
「Add permission …」の欄をクリックして、「chat:write:bot」を選択して有効にする。
「Install App to Workspace」をクリックし、「許可する」を選択する。
「OAuth Access Token」をコピーしておく。

# PHPの記述

元記事を表示

PHPで使える機械学習ライブラリ「PHP-ML」を試してみた

機械学習とかちょっと興味あるけどPythonの学習から始めなきゃいけないのか…と思っていたら、
PHPでも[PHP-ML](https://php-ml.readthedocs.io/en/latest/)という機械学習用のライブラリが用意されていたので試してみました。

#導入手順

##composerのインストール
まず、[公式サイト](https://getcomposer.org/)よりcomposerをインストールします。

“`
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1’) { echo ‘Installer verified’; } else { ech

元記事を表示

WSL(Ubuntu)にssh、MySQL、PHP、Apache2 を入れるまで。

# WSL(Ubuntu)にssh、MySQL、PHP、Apache2 を入れるまで。

## WSL の Ubuntu をインストールする。

“`
省略
“`

## 初期設定。

“`
// rootのパスワードを設定
$ sudo passwd root

# su –

// 日本語化
# apt install -y language-pack-ja manpages-ja manpages-ja-dev
# update-locale LANG=ja_JP.UTF8

// リポジトリ一覧の更新と、パッケージの更新。
# apt update
# apt upgrade -y

※ 途中、以下の「サービス再起動」に関して聞かれるので Yes で進む。
 Restart services during package upgrades without asking?

// 終わったら再起動する。Windows を再起動するか、
// 管理者で Windowsコマンドプロンプト を開いて以下を実行してサービスを再起動する。
net stop LxssManage

元記事を表示

51歳からのプログラミング 備忘 Laravel 自作認証モドキ

セキュリティーとかあまり関係ないような、個人運用のWEBサイトに、簡単な認証モドキを実装したい!なんてニーズはないのだろうけれど、認証モドキを作ってみた。いつか使ってみようかな。

#OverView
モドキなので、ほんとに簡単。バリデーションとか入れてません。
概要は下記

localhost:8000/でアクセスすると、認証済状態であればTOPページに、認証未済であればLoginページに遷移。ログインは、フォームで”123″を入力すればログイン完了!ログイン完了時にsessionとクッキーを設定して認証済状態にします。

sessionは`config.session`で、ブラウザを閉じるまでsessionを維持する状態としてます。認証済後は、topページ、secondページ、logoutページを移動できる。認証未済状態で直接top,second,logoutページにはアクセスできません。という感じでゴー!

#ファイル構成
Laravel 6.5.2

|ファイル名|説明|
|———|—|
|web.php|ルートファイル|
|SampleController.

元記事を表示

Mockeryで正規表現を使う

## 環境
– Laravel Framework 6.0.3
– Mockery 1.0
– Docker 19.03.4 (Laravelの実行環境)

## 背景
Laravelではファサードをモックしたテストを手軽に書く事ができます。[公式ドキュメント](https://readouble.com/laravel/5.8/ja/mocking.html#mocking-facades)にもある通り、モックされたファサードは`Mockery`インスタンスを返します。そのため、`Mockery::with`でファサードの引数を検証する事ができます。

## 課題
ファサードの引数にランダムな値が含まれる場合などに`with`で正規表現を使いたい場合、直感的に正規表現を書いても認識されません。

### 例
以下のようなファイルをアップロードするコマンドがあるとします。同名のファイルが存在する場合は、上書きしないように元の名前にユニークな値を追記したファイル名でアップロードします。

#### コマンド
“`php

元記事を表示

Osclassを検討して撤退を決めたまでの記録

[Osclass](https://github.com/osclass/Osclass)は、クラシファイドサービス(とかマッチングとか出会い系)サイトが作れるPHP製のCMS。
これを使って楽がしたかったんだ。

# 概要
* 2019年9月に開発終了 → [forkされて](https://github.com/navjottomer/Osclass)続いてはいる
* テーマとプラグインのマーケットも終了
* 代替マーケットも活気がない
* 広告商品のカテゴリ毎にページデザインを変更できない?
* できることがよくわからない
* Show caseの情報が少ない
* テーマ自作の詳細な解説が見付からない
* マーケットが死んでいるので、実際のテーマやプラグインからアイデアが得られない
* →コードを見るしかない
* →撤退しました

# 調査
## とりあえず動かしてみよう!
インストールガイド:https://osclass.gitbook.io/osclass-docs/beginners/install
…じょ、情報量が少ない…

ので、とりあえず遊びたい方々のため

元記事を表示

【 Laravel 】「Laravel DB Designer 」を便利に使うための知識 ”使い方・仕様 ”について解説 Vol.3

##今回は” Laravel DB Designer “の使い方・仕様について書きました(vol3)

**『Laravelを使う人を幸せにしたい』**という思いから作った「Laravel DB Designer」
(vol2の続きです)[https://qiita.com/daisu_yamazaki/items/92dc3cc599a264c3fb0f]

e.jpg

[https://laraveldb.com](https://venezia-works.com/sql/index.php)
※英語圏対応済み

##主機能
– **ER図作成 → 対応している”型”は[vol2記事の下へ](https://qiita.com/daisu_yamazaki/items/92dc3cc599

元記事を表示

php.iniの場所・パスを調べる方法

php.iniを変更したいけど、場所がわからない時、ありますよね。
そんな時はこれ↓

“`common-lisp

$ php -i | grep php.ini
Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php7.1.31/conf
Loaded Configuration File => /Applications/MAMP/bin/php/php7.1.31/conf/php.ini
“`

###### 参考
https://qiita.com/tmsanrinsha/items/2fda05db29b62090e3de

元記事を表示

配列の要素をフィルタリング(array_filter, array_reduce)

# 配列の要素をフィルタリングする(array_filter, array_reduce)
次のような連想配列から`value`が偶数の要素のみを取り出します。

“`php:index.php
$array = [
[ ‘number’ => 1 ],
[ ‘number’ => 2 ],
[ ‘number’ => 3 ],
[ ‘number’ => 4 ],
[ ‘number’ => 5 ],
[ ‘number’ => 6 ],
[ ‘number’ => 7 ],
];
“`

こちらを一旦`var_dump()`しておきます。

“`php:index.php
array(7) {
[0]=>
array(1) {
[“number”]=>
int(1)
}
[1]=>
array(1) {
[“number”]=>
int(2)
}
[2]=>
array(1) {
[“number”]=>
int(3)
}
[

元記事を表示

PHPがメインの経験者が、Pythonを始めて5日目の話(selenium)PHP vs Python

#はじめに
今回はseleniumを使用してChromeブラウザをコントロールしてWEBのサービスに保存されているファイルをダウンロードするのが目的です。もう一点の重要な目的はPHPとPythonで同じダウンロードを行い、結果の比較をしたいと思います。ダウンロードはWEBメールの添付ファイルが最初の目的でしたが、Slack や Facebook Cybozu 等、現在はPHPのコードで大体可能です。この話を聞いた某編集者がハッキングだと言われましたが、普通に自分でログインしてダウンロードするのと基本的に変わりませんので、堂々とやって良い処理です。以下、PHPだと selenium-webdriverを利用する事になる訳で、今になりPythonの場合と比較して複雑に感じます。PHPで動かす場合には次の記事を参考にさせていただきました。この記事にあるように準備が色々とあります。「[seleniumを使ってPHPでChromeの自動操作をする](https://qiita.com/Rasukarusan/items/0ca204d5b0f0fb876252)」その準備を終えて、seleniu

元記事を表示

PHPでプログラム全体の設定に使う変数の保持の仕方

PHPでちょっとしたアプリを作ったりちょっとしたフレームワークを作ったりするとき、共通の全体設定をどのように書くかという悩みがある。
頭の中を整理するためにパターン分けしてみる。説明は独断と偏見に基づいている、かもしれない。

# 定数

定数には`define`と`const`がある。

“`php

元記事を表示

Laravelでクロージャを使った自作バリデーションの作成

Laravelのバリデーションでチェックボックスの特定の組み合わせを不可にするために、
自作バリデーションを作成してみました。
自作バリデーションはRulesを作る方法がありますが、
調べた所、バリデーションでもクロージャが使えるようでした。

簡単なサンプルを作ってみました。
まずフォームを作ります。

“`

果物を選んで下さい。

@if ($errors->any())

    @foreach ($errors->all() as $error)

  • {{ $error }}
  • @endforeach

@endif

@csrf
りんご
  • OTHERカテゴリの最新記事