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

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

【php】Web API関連メモ

#【php】Web API関連メモ

自分用のメモです。

##namespace
namespace 名前空間名;

– 名前空間を定義する。
– 同一名のクラスや関数などが定義できるようになる。(衝突によるエラーや上書きを防ぐ)
– 一番上に書く。(HTMLやファイル読み込みよりも上)

▼使い方
名前空間\呼び出したいもの

– 名前空間\関数名()
– 名前空間\変数

“`php:(method.php)同一ファイルに同じ関数を書

“`

“`php:(exec.php)関数の呼び出し

//出力
こんにちはHello
“`

元記事を表示

【Laravel】migrationで複数テーブルの共通カラム定義を1か所に共通化する方法

# はじめに
複数のテーブルに同じカラムを持たせるとき、
migrationでテーブル1つ1つに同じカラム定義を記述するのは面倒です。

例えば、よく使われるのは
created_at、created_by、updated_at、updated_by、deleted_at、deleted_byなどです。

普通にやると各テーブルごとに上記カラム定義を記述することになりますね。

“`php
public function up()
{
Schema::create(‘foo_table’, function (Blueprint $table) {
$table->id();

$table->timestamp(‘created_at’)->nullable();
$table->unsignedBigInteger(‘created_by’)->nullable();
$table->timestamp(‘updated_at’)->nullable()

元記事を表示

【総集編】6月ふりかえり

# はじめに

今月のふりかえりです。
月1で振り返り
今後は何を勉強するかを決めます。

——————————–
# 6月 1週目

2020/06/03 [【プログラミング】吾輩は関数である名前はまだない](https://qiita.com/ymd65536/items/ab17bc0b1d47d37c1b9e)

2020/06/07 [【SQL】最初に覚えるSQLの話](https://qiita.com/ymd65536/items/c9537e5525143c31a551)

——————————–
# 6月 2週目

2020/06/08 [【データベース】正規化について知る](https://qiita.com/ymd65536/items/d69f106eca0fe25bf047)

2020/06/10 [【ExcelVBA】オブジェクト指向プログラミングをしよう](https://qiita.com/ymd65536/items/c88881f630ed1125fa6

元記事を表示

Fetch APIでPHPにデータを送信する方法

画面遷移をせず、ajaxでデータをPHPに渡す方法です。

下記は「ボタンをクリックした時にPHPにデータを渡す」処理についてのサンプルです。

## Javascript

`id=”start”`のボタンがあるとします。

“`HTML:index.html

“`
vanilla Javascriptでは、下記のように記述します。

“`javascript:main.js
start.addEventListener(‘click’, () => {
const postData = new FormData; // フォーム方式で送る場合
postData.set(‘firstName’, ‘hoge’); // set()で格納する
postData.set(‘lastName’, ‘fuga’);

const data = {

元記事を表示

【PHP】 空白文字で文字列を分割して検索用キーワードの配列を作る

# これは何?

データベースの LIKE 検索用途とかでキーワードを抽出するやつ。
例えば

`PHP Qiita Laravel`

と入力したら,

`PHP` `Qiita` `Laravel`

として取り出す関数を作ります。

# 実装

実装したい関数の形を示し, 2 つの異なるアプローチでの実装例を記載します。

## 関数シグネチャ

`$input` に入力文字列を渡し, `$limit` にキーワード数制限を指定します。 `-1` を指定した場合は無制限になり,これをデフォルトとします。

“`php
function extractKeywords(string $input, int $limit = -1): array
“`

## 手法の比較

※ 「手法」の名称は一般的に提唱されているものではありません

| 手法 | 説明 | よく使われる関数 |
|:—-|:—-|:—|
| 空白分割法 | 空白文字で分割し,残った部分をキーワードとする。**キーワード数制限を超過する場合,最後の1つの中に空白文字を含む残りのすべてが含まれる。**

元記事を表示

【Laravel】日本語で指定されたFakerから英語のFakerを使う

#はじめに
モデルファクトリをつかってテスト用のデータを生成する際、氏名は日本語でFakerを使いたい、でもIDとかは英語で使いたい・・・ってなった時に、コンフィグで日本語設定をしつつ、使いたいときだけ英語のFakerを使う方法です。

###標準言語設定
“`php:app.php
/*
|————————————————————————–
| Faker Locale
|————————————————————————–
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| locali

元記事を表示

MAMPを使用して、Zend Framework 1系の環境構築をする

# Zend Framework 1系の環境構築

## 前提
– MAMPがインストールされていること
– インストールが済んでない方は[こちら](https://www.mamp.info/en/mac/)から
– Zend Frameworkのバージョンは1.12.3とする

## 手順
### Zend Frameworkをダウンロードする
“`shell
$ wget https://packages.zendframework.com/releases/ZendFramework-1.12.3/ZendFramework-1.12.3.tar.gz
“`

※ 下記のようなエラーが出た場合はwgetコマンドをインストールする → [こちら](https://webkaru.net/dev/mac-wget-command-install/)を参考にする
> command not found: wget

### ダウンロードしたディレクトリを展開する
“`shell
tar zxvf ZendFramework-1.12.3.tar.gz
“`

tarコ

元記事を表示

LaravelでのファイルアップロードAPIとUnitTest

– Windows 10
– PHP 7.4.5
– Laravel Framework 7.9.2

## アップロードAPI

“`php:app/Http/Controllers/ImagesController.php
file(‘file’)->store(‘images’);
return response()->json([

元記事を表示

PHPMVCのC⇆Vについて(見直し用メモ)

###前提知識
namespace…このファイルここに配置されてますよ〜って書いてるやつ
use…他フォルダにあるクラスを利用可能にしたもの

##ルーティング
・アドレスに対してコントローラーメソッドを指示する。
・$requestのプロパティの情報を飛ばす

“`ルート情報記述.php
Route::get(アドレス,関数など);
“`

“`viewとは.php
view(テンプレート名)
//指定したテンプレートのファイルをロードし、レンタリング(表示できるように整える)して返す
“`
特定のアドレスにアクセスした際、何の処理を実行するのかを記述したもの。

“`web.php

元記事を表示

Laravelでレートリミット制限をかけて制限時の429エラーレスポンスをjsonで返す

## Dos攻撃対策のレート制限を実装

apiの外部公開をするにあたり、Dos攻撃対策としてレートリミット機能を実装しました。

venderにあるライブラリ標準機能では、アクセス制限がかかった際は429エラーページの表示がされるようになっています。

それを次のように変更しました。

・jsonでエラーメッセージを返すようにする
・レートリミット制限の設定を環境変数から制御する

今回行った実装内容を簡単にご紹介します。

## 参考リンク

公式のレートリミットの解説
https://readouble.com/laravel/6.x/ja/routing.html

ルーティングの設定についての解説(今回は触りませんでした)
https://laravel.com/docs/7.x/routing#rate-limiting

分かりやすく解説されているブログの記事一覧

https://access-jp.co.jp/blogs/developme

元記事を表示

Docker運用のためのLaravelログ出力

# 概要
Docker運用におけるログ出力は標準出力/標準エラー出力となるが、単純にLaravel側でログを標準出力に設定しても出力されず、該当する記事も見当たらなかったため、実装した内容を記録する。
# Laravelチャンネルドライバ設定
これは[公式](https://readouble.com/laravel/6.x/ja/logging.html)などにも出ているので問題にならないが、具体的には以下の二通りがある。

* 直接標準出力を指定するパターン
チャンネルドライバに`stderr`を指定する。

“`.env:/.env
LOG_CHANNEL=stderr
“`
* デフォルトのドライバを指定するパターン
他のドライバを内部で複数ラッピングできるので運用上こちらの方が便利。
* チャンネルドライバに`stack`を指定する。
* `stack`のドライバ指定に`stderr`を追加する。

“`env:/.env
LOG_CHANNEL=stack
“`

“`php:/config/logging.php

‘chann

元記事を表示

Windows10のタスクスケジューラでphpを実行する

#タスクスケジューラとは
Linuxでいうところのcrontabのようにバッチを設定するソフトです。

#タスクスケジューラ起動
スタートボタン -> Windows管理ツール -> タスクスケジューラー

#タスク生成
タスクスケジューラライブラリの上で右クリック -> 基本タスクの作成

名前・説明: 後から見てもわかるように適当につける
トリガー: 今回はテストで行うので1回限りにチェック
開始時刻: 近い時刻
操作: プログラムの開始

**<操作 プログラムの開始>**
プログラム/スクリプト: php(xamppを利用していた私の場合は C:\xampp\php\php.exe)
引数の追加: -f 登録したいPHPファイル (-f test.php)
開始(オプション): 登録したいPHPファイルの位置 (C:\xampp\htdocs\)
[php コマンドラインオプション](https://www.php.net/manual/ja/features.commandline.options.php)

#タスク起動
設定した時間が来るのを待つ or タスク選択して右

元記事を表示

PHP,Laravel導入

# php インストール
“`:ターミナル
brew install php@7.1
“`
## pathを通す
“`:ターミナル
echo ‘export PATH=”/usr/local/opt/php@7.1/bin:$PATH”‘ >> ~/.zshrc
echo ‘export PATH=”/usr/local/opt/php@7.1/sbin:$PATH”‘ >> ~/.zshrc
“`
更新

“`:ターミナル
source .zshrc
“`
# php バージョン切り替え
“`:ターミナル
7.1から7.3に切り替えたい場合。
brew unlink php@7.1
brew link php@7.3
“`
# パスの変更
`vi .zshrc`

“`
export PATH=”/usr/local/opt/php@7.3/bin:$PATH”
export PATH=”/usr/local/opt/php@7.3/sbin:$PATH”
“`
“`
source .zshrc
“`

# laravel
## composerインス

元記事を表示

Laravelで便利なおすすめComposerパッケージ一覧

# はじめに
Laravelでアプリを作るときに
使うことが多い便利なパッケージをまとめました。
全てComposerでインストール可能なパッケージです。

主に管理画面系のwebアプリ構築の経験が多いため、
パッケージの選定もそのようなアプリで利用するものが多いです。

他にも便利なおすすめパッケージがあれば
ぜひコメントよろしくお願いします。

# 必須
### barryvdh/laravel-debugbar
https://github.com/barryvdh/laravel-debugbar
ブラウザ下部にデバッグバーを表示する。
その時にリクエストで発行されたSQL一覧や、今持っているセッション情報一覧など
デバッグに便利な情報がブラウザ上で確認できるようになる。

### barryvdh/laravel-ide-helper
https://github.com/barryvdh/laravel-ide-helper
IDEを利用してコーディングする際に、
コード補完を強化する。
変数からアローを書いたときにメソッドやプロパティのサジェスチョンがたくさん表示されたり

元記事を表示

php アルゴリズム備忘録

## 文字列の切り出し

任意の文字列とその文字列の「**何文字目**」から「**何文字**」取得するかをプログラムする構文

“` php:hoge.php

“`

#### substr関数
文字を切り出す関数

substr(任意の文字列、 X文字目から、 Y文字切り取る) 

## 絶対値取得

#### abs関数

“` php:hoge.php

元記事を表示

【Laravel】 Cron タスクスケジューラの onOneServer() と withoutOverlapping() の違い

# はじめに

Laravel には Cron を利用したタスクスケジューリング機能があります。

– [Task Scheduling – Laravel – The PHP Framework For Web Artisans](https://laravel.com/docs/7.x/scheduling)
– [タスクスケジュール 7.x Laravel](https://readouble.com/laravel/7.x/ja/scheduling.html)

ところが素でこれをそのまま使うと,ワーカーとして複数インスタンスを立ててスケーリングしている場合などに,重複実行されてしまう問題があります。これを防ぐためには基本は `onOneServer()` を使っておけばいいのですが,なにやら `withoutOverlapping()` というものも存在することを知りました。微妙に用途が異なるみたいなので,ここで整理しておこうと思います。

現在時刻が「$H$ 時 $(i – 1)$ 分 $59$ 秒」であるとします。ここから1秒経過して「$H$ 時 $i$ 分 $0$ 秒

元記事を表示

Vdebugを使ってVimでPHPのデバッグ環境を整える

PHPはずっとPHPStormで書いていて不自由はなかったのですが、最近他の言語でvimを使いだしたところ、全部vimでやりたくなる一過性の病にかかったのでPHPでデバッグ環境を整えています。

PHPのxdebugを実行するのにvimのプラグインVdebugを使います。
[vim\-vdebug/vdebug: Multi\-language DBGP debugger client for Vim \(PHP, Python, Perl, Ruby, etc\.\)](https://github.com/vim-vdebug/vdebug)

全部マニュアルに書いてあるので読めば終了なんですが、せっかく触りながらマニュアルの内容を確かめたので備忘として残しておきます。
ただし、CLIでローカル実行した場合についてです。
ブラウザからのリクエストで起動する場合やリモートデバッグはまたいつか追記するかもしれません。

<実行中の雰囲気>
![phpdbg-memory-2.gif](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

PHP基礎<PHPの書き方・表示方法>

#前書き
PHPを基礎から学習しています。
積み重ねのアウトプットとして更新していきます。

#PHPの書き方

“`index.php

‘); //改行
echo (‘こんにちは’); // プログラム
echo (123);
?> // 終了タグ

“`

– 開始タグを書き、その間にプログラムを記述する
– PHP ファイルの拡張子は .php とする
– ‘○○’シングルクオーテーションは必ず必要
– echoの場合は(  )が無くても可
– ; (セミコロン)は必ず付ける
– コメントアウトは//から改行までか/* から */の範囲に記述する

#ブラウザにPHPを表示する
– MAMPを使ってPHPを表示する

http://localhost:8888/(PHPプロジェクトのフォルダ名)/(PHPファイル名).php
と入力すればブラウザで表示が確認ができる。

#あとがき

初回は基本の書き方のみまとめました。
次回は変数に

元記事を表示

メディアクエリの使い方

#メディアクエリの使い方

個人アプリでレスポンシブ対応が必要だったので、その使い方を記事にまとめました。

“`php:index.blade.php

@foreach($posts as $post)
Laravel環境構築時のエラー解決 Mac

# エラー内容
“`
$ composer global require laravel/installer

Changed current directory to /Users/ooshiroippei/.composer
Using version ^3.1 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Installation request for laravel/installer ^3.1 -> satisfiable by laravel/installer[v3.1.0].
– laravel/installe

元記事を表示

OTHERカテゴリの最新記事