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

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

CakePHP Training(公式) 受講メモ

先日cakephpの公式ウェビナーを受講しました。様子や感想をメモしておきます。

###2ドルでした
https://training.cakephp.org/
現地時間の午後4時なので0時から3時間すね
###cakephpの主要なcommitter
jose gonzalez さん直々に
https://github.com/josegonzalez
初心者向けのチュートリアルを実施
しながら、ずっと説明してくれています
###「cakephpあるある」とか
はさんでくれます
テーブルを変更しても
entityをbakeし直さないと反映されないので
formが動作しないから気をつけてねとか
言ってますね
###細かいところまでご存知なので
知らないければ使わない便利関数
Text::toList()とかdd()とか
知れてよかったです
###一番驚いた機能は
debug barのhistoryで遡って save() の sql log が
見られたことです
###初心者向けウェビナーということで、
ターゲット外のフレームワーク全体の質問
は受け流しているのが面白かったです
「ca

元記事を表示

JIRA APIを使用してslackに直近のリリース案件を通知しよう with PHP

# 課題定義
Jiraでたくさんの案件管理をしていると、どの案件がリリースがいつあるのか忘れることがよくあります。

– え、明日リリースだっけ?
– このページバグってるんですけど、今日誰かリリースしたんですか(同チームより)
– 同じコンテンツでリリースあるの知らなくてgit-flowのリリースブランチ作っちゃったんですけど・・・

などなど、リリース日をチーム間で把握していないと上記のような事象が発生していました。

# 解決策
これらの課題を解決するためにJiraAPIを使用して直近のリリース日を通知する機能を作ってみました。

![jira.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153118/fd2fb21b-7b02-0d9a-2cfa-e4d712ca944f.png)

JiraAPIを叩いて、Webhookでslackに通知するだけです。

# 必要なもの
– Jiraのアカウント
– slackのアカウント
– slackのIncoming WebhookのURLを発行する(

元記事を表示

PHPでの三項演算子(if文に?(はてな)があるコード)について

#プログラミングの勉強日記
2020年8月28日
`?`(はてなマーク)の後に`:`がある式についてまとめる。`?`と`:`は、条件分岐の式を記述できる三項演算子(条件演算子)となる。記号は2つ使うが、演算子としては1つの演算子となる。

#書き方
 三項演算子では、演算の対象である被演算子を3つとり、`?`と`:`を以下のように書く。

“`:書き方
(条件式)? <真式> : <偽式>
“`

“`php:具体例
$num = 13;
echo ($num%2==0) ? ‘真’ : ‘偽’;

// 上記は以下と同じ
if ($num%2==0) {
echo ‘真’;
} else {
echo ‘偽’;
}
“`

#??マークとは(番外編)
 `??`はnull合体演算子と呼ばれている。これはnullかどうかを確認することができる。

#参考文献
[【PHP】?(ハテナマーク)と : (コロン)条件演算子|条件分岐を一行で記述](https://blog-and-destroy.com/7118)
[3

元記事を表示

stripeエンドポイント作成 php

stripe custom webhook
ダッシュボードがトリガー

“`php:webhook.php

元記事を表示

Laravel PHP-CS-Fixer のルール設定

## PHP-CS-Fixer

https://github.com/FriendsOfPHP/PHP-CS-Fixer

PHPコードを美しく整形してくれる魔法の開発ツールです。

## インストール手順

“`shell-session
$ composer require –dev friendsofphp/php-cs-fixer
$ ./vendor/bin/php-cs-fixer –version
PHP CS Fixer 2.16.4 Yellow Bird by Fabien Potencier and Dariusz Ruminski
“`

`.gitignore` にキャッシュファイルを追加する

“`.gitignore
.php_cs.cache
“`

整形設定ファイル(`.php_cs.dist`)を作る

“`shell-session
$ touch .php_cs.dist
“`

## 整形設定ファイル例

“`php:.php_cs.dist

元記事を表示

Laravelでログイン機能付きサイト作成 with XAMPP(4/4) 検索機能編

## 目標
**`Laravel`でユーザー検索機能を持ったサイトを作成する。**

## 前回の記事
[Laravelでログイン機能付きサイト作成 with XAMPP(3/4) ユーザー情報変更機能編](https://qiita.com/kaitaku/items/d7faf24a68ba933607f0)

## 検索機能作成
検索内容はテーブルに登録されているユーザー情報の部分一致。
**`検索画面 → 検索結果画面`**の構成で作成していく。

### 検索画面

コントローラーを下記のコマンドで作成する。

“`
$ php artisan make:controller User/SearchController
“`

今回の検索機能では、検索ワードから部分一致の値をすべて検索してから結果を返すのではなく、あらかじめ検索するカテゴリー、カラムを指定する。
そのため、コントローラーでViewに渡すカテゴリーを記入する。

“`(プロジェクト名)\app\Http\Controllers\User\SearchController.php

元記事を表示

データの宝庫・アクセス履歴! Laravel のミドルウェアや Eloquent を使って,お手軽二時間コースで作る,アクセス履歴管理プロトタイプ

# 情報システムの隠れたデータ資産

情報システムを運用することで,日々蓄積されていく業務データ(例:受注データ,決算データ,品質情報データ)については,その活用がさかんに議論される一方で,情報システムのアクセス履歴については,積極的な収集・活用が進んでいるという事例を,あまり聞きません。

アクセス履歴を蓄えることで,情報システム部隊としても,いろいろな活用用途が考えられそうです:

– よく利用される機能の掌握(➡ より使いやすいよう重点的に改良)
– あまり使われていない機能の掌握(➡ 使いこなし up 支援,機能の廃却 etc……)

使われている機能に加え,**どういうデータが入力され,どんなデータが出力されているかも,いっしょにログを取っていけばすれば,単体テスト時の,インプット・アウトプット情報として活用できる**道もありそうです。

アクセス履歴を蓄積しないことは,重要なデータ資産を,垂れ流しにしているようなものかも知れません(チョット言い過ぎ?)。

Laravel の勉強がてら,簡単に実装できる「アクセス履歴管理」プロトタイプを組んでみましたので,事例として

元記事を表示

整数同士の除算演算子の挙動 (C言語、C++、Scala、Java、Rust、Go言語、PHP、JavaScript、Perl、Python、Ruby)

整数での `/` と `%` の演算子の挙動。

整数を整数で割ったら **整数** vs **浮動小数点数** どっち?

– `-5 / 4` は **-1.25**
– PHP
– 割り切れないから浮動小数点数
– Perl
– 割り切れないから浮動小数点数
– `use integer` を宣言するとC言語派に変わる
– Python
– 割り切れるか関係なく割り算したら浮動小数点数
– C言語派のために `//` という演算子もある
– JavaScript
– はじめから整数と浮動小数点数の区別がない
– `-5 / 4` は **-1**
– C言語 / C++ / Scala / Java / Rust / Go言語
– 静的型付けの言語
– `-5 / 4` は **-2**
– Ruby
– 仲間はずれ

負の剰余(割り算の余り `%`演算子)は **正** vs **負** どっち?

元記事を表示

CakePHPにおけるrenderメソッド

#プログラミングの勉強日記
2020年8月27日
Railsではrenderメソッドを使ったことがあったけど、CakePHPでも使えたのでrenderメソッドについてまとめる。

#renderメソッドとは
 別のビューファイルを描画したいときに便利なメソッド。Controller::render()メソッドは各アクションの最後に自動的に呼び出されて、ビューを描画する。なので、別のビューファイルを指定するときには、renderメソッドを使用すると非常に便利。

#使い方
 renderメソッドに引数を指定しない場合は、通常通りにビューファイルが呼び出される。引数を指定しない場合はrenderメソッドを使用しなくてもビューファイルは自動的に呼び出されるのであまり必要ない。

“`php
$this->render();
“`
 renderメソッドに引数を指定すると、引数で別のビューファイルを指定することができる。この引数で指定したビューファイルが表示される。

“`php
$this->render(‘/test/testSample’);
“`

#注意点
 renderメソ

元記事を表示

Laravel + SwaggerUI + DockerでAPI仕様書を表示する

# はじめに
DockerでSwaggerUIコンテナを立ち上げ、Laravelで作成したAPIからAPI仕様書を表示します。

## やりたいこと
– SwaggerUIでAPI仕様書を表示したい

## この記事で触れないこと
– LaravelのAPI開発手順など

## ディレクトリ構成
“`
.
├── docker-file
│ └── web
│ ├── Dockerfile
│ └── php.ini
├── swagger-docs
│ └── swagger.json
├── volumes
│ └── swagger-api
└── docker-compose.yml
“`
# 各ファイルの内容
## docker-compose.yml
今回はswagger-uiに焦点を当てている為、dbの項目の記載は省略しています。

“`docker-compose.yml
version: ‘3’

services:

web:
container_name: web
build: ./docker

元記事を表示

phpでauカブコム証券のkabuステーションAPIをたたく!

トークン取得のところまで作成。

パスワードをpostするのだけど、JSONで送るのがミソ。ここを普通にクエリパラメータで送ると4001005パラメータ変換エラーになるので注意。

“`php
$url = “http://localhost:18081/kabusapi/token”;
$data = [‘APIPassword’ => ‘mypass’];
$opts = [
‘http’ => [
‘method’ => “POST”,
‘header’=> “Content-type: application/json\r\n” . “Accept: application/json\r\n”,
‘content’ => json_encode($data),
‘ignore_errors’ => true,
‘protocol_version’

元記事を表示

[PHP]DOMDocumentクラスを使ってHTMLを構築してみる

PHPを使ってHTMLを構築する時、一般的にはechoやヒアドキュメント、あるいはphpタグから脱出させて書くことになると思います。今回は、PHPでHTMLを出力する方法はこれだけではない!という記事です。

結論から言ってしまいますが、実用性は欠落しているので、「こんな方法もあるんだ!」みたいな温度感で読んでもらえたら幸いです。

##DOMDocumentクラスって何?
Web制作に携わっている方ならPHPはある程度使い慣れた言語かもしれませんが、`DOMDocument`クラスを使ったことがあるという方は少ないかもしれません。なぜならスクレイピングやDOM解析を行わない限りはお目にかかることのないクラスだからです。

改めて、`DOMDocument`クラスは、公式の説明によると、`HTML ドキュメントあるいは XML ドキュメント全体を表し、 ドキュメントツリーのルートとなります。`ということです。だいたい以下のようなケースで使用することが想定されます。

– スクレイピング
– DOM解析
– fopenと組み合わせて外部HTMLを開いてDOMの微調整をする
– XMLの生

元記事を表示

PHPの基本文法

##はじめに
PHPを学びたてのコテコテの初心者です。
間違ってる点などあれば、ご指摘いただければ幸いです。

##print構文

“`php:qiita.php

“`

ダブルコーテーションを表示させたい時は**エスケープシーケンス**を使用する

“`php:qiita.php

“`

###簡単なエスケープシーケンスのまとめ

| エスケープシーケンス | 効果 |
|:———–|————:|
| \n | 改行 |
|\r | キャリッジリターン |
| \t | タブ |
| \\ | \ |
| \$ | $ |
| \” | ” |
| \’ | ‘ |

>キャリッジリターンとは
カーソルを先頭に戻す制御文字

##算術演算子
””で囲む

元記事を表示

phpinfoをコマンドラインから見る

“`
php -i
“`

元記事を表示

PHPでログローテーションの機能を実装してみた

# はじめに
必要に迫られ、PHPでログローテーション機能を作ることになりました。
できればミドルやフリーツールでサクっと設定できれば良かったのですが…。

PHP初心者なので小難しいことはせず、①保存期限を超過したバックアップファイルを削除する。②ログファイルのバックアップを取得する。の2つの処理をサクっと書くに留めました。

備忘録として残しておきます。

# ログローテーション
### PHPで実装した結果
**【前提として】**

– ログファイル名は「batch.log」
– バックアップは1日1回
– バックアップファイルはログファイル名の後ろにシステム日付が付与される
– ログ保存日数5日

“`php:log_rotate.php

元記事を表示

命日から五十回忌までの日付を取得

かなりマニアックな内容ですが、命日から中陰(七日ごと四十九日まで)、年忌(一周忌〜五十回忌)までの日付を取得する関数を作りました。

##開発環境
MAMP

##コード

“`

元記事を表示

Laravel CRUD処理を使った投稿アプリを作成する その7 問い合わせフォームの作成

# 目的

– アプリを作成する上で基本となるCRUD処理を有したLaravelアプリをチュートリアル的に作成する方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qii

元記事を表示

[PHP]ベーシック認証

test.phpを閲覧しようとすると、IDとパスワードの入力を求められるような、ベーシック認証を設定しています。

“`.htpasswd
admin:$2y$10$KzSlgR.Ze4qmJS03gAFcJO80hdKuPrZ3XAVkMHa5Wf792M0mVX/nS

//ID:パスワード の形式で書く。パスワードの後は、ENTERで改行する。

“`

“`.htaccess

AuthType Basic
AuthName “IDとパスワードを入力してください”
AuthUserFile /Applications/MAMP/htdocs/xxxxxxx/mainte/.htpasswd
require valid-user

//AuthUserFileでパスワードファイルの在り処を指定
//require valid-userで認証したユーザーのみがページに入れるようにする。require valid-userのあとはENTERで改行する。
“`

AuthNameでIDとパスワードの入

元記事を表示

【PHP】会社のルーターを触らずに、リモートマシンのデバッグを「複数人で」やる【Xdebug×DBGpProxy】

# 目的

複数の開発者が、1つのサーバー上で稼働するPHP Webアプリケーション(nginx + php-fpm)に対してデバッガー(ブレークポイント)を使えるようにすることを目指します。会社なのでルーターをいじれない、という条件付きです。

記事タイトルは
[【PHP】リモートマシンのデバッグを、「複数人で」やる【Xdebug×DBGpProxy】](https://qiita.com/takudo/items/35d2fd3c6e9846715bf4)
のパクリです。

# 図解
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31118/623e692b-87f9-10da-aebd-fa215c048c61.png)

# 前提
・ローカルマシン: Mac
・リモートマシン: Linux
・IDE: PHPStorm (2020.2)
・ブラウザ: Chrome
・サーバーにsshで接続できること(リモートポートフォワーディング用)
・会社など、ルーターのポートフォワーディング

元記事を表示

【PHP】オブジェクトと連想配列の違い

スクール時代に配列、オブジェクトの概念はそれとなく理解していたつもりでしたが、
実務の中で配列、連想配列について考える事が多く、特に【連想配列】についての理解があまりなかったので、自分向けに簡単にまとめて見た。

## オブジェクトと連想配列
これがオブジェクト。

“`PHP:index.php
class object{
public $name = “サトシ”;
public $age = 30;
}
“`
オブジェクトはオブジェクト名を書いて、 { } の中に値を入れます。
オブジェクトの中には変数や関数を書く事が出来ます。また、変数のことをプロパティと呼びます。

そして↓が連想配列ですね。

“`PHP:index.php
$array = [
“name” => “カスミ”,
“age” => 29,
];
“`

keyとvalueが => ダブルアロー演算子(ハッシュロケット)で組み合わさっています。

## オブジェクトと連想配列の使い方
“`PHP:index.php
class object{
public

元記事を表示

OTHERカテゴリの最新記事