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

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

【Laravel】アロー演算子の読み解き方

#はじめに
最近PHPやLaravelを学習し始めた僕ですが、オブジェクトのメンバ(メソッド、プロパティ)を取得する役割の**アロー演算子**について触れる機会が多くあり、読み解くのに苦労したので自分なりにまとめたいと思います。
初学者が故に間違っている点ありましたらご指摘いただけると幸いです。

#アロー演算子てなんぞや
`->`これです。
右辺に使いたいメソッドやプロパティ。左辺にそれらが置いてあるクラスを記述します。

具体的な使い方としては

“`php
class PostController extends Controller
{
private $post;

  public function __construct(Post $instanceClass)
{
$this->post = $instanceClass;
}

public function index () {
$post = $this->post->all();
}
}
“`
`$this->post` PostContr

元記事を表示

LaravelでDBのカラム(mysql)のコメントの作成・確認方法

# はじめに
当記事は、Laravelのマイグレーションファイルでカラムにコメントをつける方法、およびmysqlでそのカラムにつけられているコメントを確認する方法を書いています。
#経緯
先日、業務内でデータベースのカラムにコメントがつけられていないために、間違った設計を行ってしまったことがありました(自己責任です)。
やはり、テーブル名、カラム名から推測しにくかったり、外部にも同名のカラムがあって、且つ意味するものが違う場合などはカラムにコメントを付けたほうが良いと思います。

## マイグレーションファイルの記述
二行目の`comment()`でカラムにつけるコメントを記述する。

“`migration.php
Schema::create(‘users’, function (Blueprint $table) {
$table->string(‘name’)->comment(‘名前’);
});
“`
##MySQLでの確認方法
“`
show full columns from users;
“`

右端のcommentのところに`名前`と出てますね。

元記事を表示

Yiiのデバッグツールでユーザーを自由に切り替えるSwitchUser

# 概要
Yii2のデバッグツールには、ユーザーを自由に切り替える機能があります。
開発中色々なユーザーで動作確認をしたいときに大変便利です。

## 前提条件
– debugツールバーが使える
– userの設定ができている

## 設定

common/config/main-local.php

“`php5
‘modules’=>[
‘debug’ => [
‘class’ => ‘yii\debug\Module’,
‘panels’ => [
‘user’ => [
‘class’ => ‘yii\debug\panels\UserPanel’,
‘ruleUserSwitch’ => [
‘allow’ => true,
‘roles’ => [‘@’],
],
],
],
],
],

元記事を表示

Yiiのロガーを変更してActiveRecordを見やすくする

# 概要
YiiのデベロッパーツールのログでActiveRecordの中身を出力した時、見にくかったので変更してみました。

## 環境

| |Version|
|:—-|:—-|
| PHP | 7.3 |
| Yii | 2 |

## 変更箇所

vendor/yiisoft/yii2/helpers/BaseVarDumper.php
line.197

“`php
// 変更前のコード
$output = ‘unserialize(‘ . var_export(serialize($var), true) . ‘)’;

// 変更後のコード
$originObj = clone $var;
$output = print_r((array) $originObj, true);
“`

## 出力サンプル

“`
+——+———–+————+————————+
| id | last_name | first_name | email

元記事を表示

YiiのデバッグツールにGitのbranchを表示してみた

# 概要
Yiiのデバッグツールに現在のbranchを表示するようにしてみた。

## デバッグツールのカスタマイズ
[デバッグツールバーとデバッガ](https://yii2-framework.readthedocs.io/en/stable/guide-ja/tool-debugger/#_4)の あなた自身のパネルを作る を元にカスタマイズしました。

### ファイル作成
`yiisoft/yii2-debug/src/panels` に GitPanel.php を作成します。
ベースは [こちら](https://yii2-framework.readthedocs.io/en/stable/guide-ja/tool-debugger/#_4)の ViewsPanel.php。

### 現在のbranchを取得する処理
[PHPで現在のgitブランチを取得する](https://co.bsnws.net/article/78) こちらの記事から処理を実装。

“`php

元記事を表示

phpで、$a~$zの変数についてワンライナーで定義する

# はじめに
このコードはネタコードです。
\$a ~ \$zの変数について、ワンライナーで定義したいと思います。格納する値は5です。

# ワンライナー

“`php
$a = ( $b = ( $c = ( $d = ( $e = ( $f = ( $g = ( $h = ( $i = ( $j = ( $k = ( $l = ( $m = ( $n = ( $o = ( $p = ( $q = ( $r = ( $s = ( $t = ( $u = ( $v = ( $w = ( $x = ( $y = ( $z = 5 )))))))))))))))))))))))));
“`

# 出力すると
“`shell-session
$ php -a
Interactive shell

php > $a = ( $b = ( $c = ( $d = ( $e = ( $f = ( $g = ( $h = ( $i = ( $j = ( $k = ( $l = ( $m = ( $n = ( $o = ( $p = ( $q = ( $r = ( $s = ( $t =

元記事を表示

herokuとPHPでオウム返しlinebotを作る(Windows10)

#目的
目的は,LINEでオウム返しをするBOTを作ること.
※当方はPHPを含め初心者であるため,内容についてのミス等あればぜひご指摘頂きたいです.

#作成したBOTとリポジトリ
こちらから友達追加ができます.
https://lin.ee/eNVEud5
![M.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488221/3ec1b4b4-ddb1-8f0a-7491-5c969d25d8d8.png)  友だち追加
Githubのリポジトリ:https://github.com/rintaro9147/linebot20200328

#準備
1. [heroku](https://jp.heroku.com/)の登録!
2. [

元記事を表示

Composerをインストールする

# composerをダウンロードします
[https://getcomposer.org/composer-stable.phar](https://getcomposer.org/composer-stable.phar)

特定のバージョンをダウンロードしたい場合は下記からダウンロードします
[https://getcomposer.org/download#composer-history-caption](https://getcomposer.org/download#composer-history-caption)

# composer.bat作成
ダウンロードしたcomposer.pharと同じフォルダ内にcomposer.batを作成する

“`composer.bat
@php “%~dp0composer.phar” %*
“`

ファイル構成は下記となります

“`
`– composer
|– composer.bat
`– composer.phar
“`

# 環境変数修正
PATHという名前の環境変数の値にcompose

元記事を表示

PDOの静的プレースホルダで整数をバインドするとけったいな結果になるケース

PHPの提供するデータベースアクセスライブラリPDOの挙動について調べていて、動的プレースホルダ(Prepared Statementのエミュレーション)の場合については以下の記事にまとめました。

[PHP 7.2以降におけるPDO::PARAM_INTの仕様変更]
(https://blog.tokumaru.org/2020/03/php-72-pdo-param-int.html)

では静的プレースホルダ(Prepared Statement)の場合はどうかというと、中々にカオスな状況になっておりまして、まだまとめられていませんが、特徴的なトピックスについてこちらに書いてみます。

PoCを以下に示します。

“`PHP
setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // 静的プレースホルダ
$ps = $db->prepare(“SE

元記事を表示

【初心者向け】PHPマスター講座 vol.1(文字列を学ぼう)

みなさんこんにちは!けいです

今日から復習の意味も込めて
Qiitaでの投稿を始めていきます。

今後のQiitaでの投稿は可能な限り

**【プログラミング初心者でも迷わずに理解できる構成】**でまとめていきます。

もし記事内容に誤り及び不明点があれば都度コメントでいただければと思います!

それでは早速、本題にいきましょう。

#【PHPマスター講座】文字列とは

====================================

###▶︎Print構文を一言で表すと??

print(プリント)は印刷するという意味の英語で

ようは

**【文字列をサイト上で表示(印刷)するよ!】**

という(直感でわかりやすい)意味です。

Print構文の書き方はコチラ↓↓

`print 文字列`

print自体は関数ではないので
引数の文字列を括弧()で囲む必要はありません。

====================================

###▶︎Print構文って、どうやって使うの??

まずは説明をする前に
実際に例文を一つ見ていきましょう。

たと

元記事を表示

【ECCUBE4】登録メンバーごとに商品・受注を管理できるようにする①

# 目的
ログインメンバーごとに
・商品管理
・受注管理
できるようにカスタマイズする。

# 方針
メンバーに割り当てられているcreator_idを活用します。

# 今回すること
・メンバーが登録した商品しか管理画面商品一覧表示されるようにします。
・異なるメンバーが登録した商品は同じカートに入れられないようにします。

## メンバーが登録した商品しか管理画面商品一覧表示されるようにします
こちらをそのまま記載します。

EC-CUBE4の管理画面にログインしたら自分が登録した商品しか商品一覧に表示されないようにする方法

## 異なるメンバーが登録した商品は同じカートに入れられないようにする
受注を管理するため、同じメンバーの商品しかカートに入れられないようにします。

“`app/Customize/Service/Cart/ProductCreatorCartAllocator.php

元記事を表示

PHPでポートフォリオ作成:カレンダー

# 記事の概要
作った背景、工夫したところ、機能をまとめました。

下にコードを記載しました。

# 背景

一般的なカレンダー(家の壁にかかっているものを想像してほしいです)を作成したときに、自分のスケジュールを書き込めると、カレンダーとしての価値がアップするのでないかなと思い作成にいたりました。

エクセルのようなレイアウトで日付とスケジュールを同時に表示するようなカレンダーを作成します。

工夫としては、当たり前ですが見た目を分かりやすく、使用者が使いやすいようにシンプルにしました。

# 目的
・PHPを用いて簡単なアプリケーションを作る
・見やすくて使いやすいアプリを作る
・カレンダー機能+スケジュール機能で単純なカレンダーに価値をつける

# スペック
言語
PHP 7.4.2
データーベース
MariaDB 10.4.11
開発環境
Apache 2.4.41

ビジュアルスタジオコード使用

# 主な機能

・今月の日付の表示機能
・来月、前月のカレンダーへのリンク
リンクをクリックすると、来月もしくわ前月のカレンダーに飛びます

・スケジュールの表示機能
カレンダー

元記事を表示

Google reCAPTCHAを設置する

個人的な備忘録として

#APIの取得

ここからいろいろ設定
[Google reCAPTCHA](https://www.google.com/recaptcha/admin/create)

#フロントサイド

“`recaptcha.html





“`

#サーバサイド
“`Ninshou.php
public function login() {
if ($this->request->is(‘post’)) {
//RECAPTCHAからのResponseデータを受ける
$recaptcha

元記事を表示

サービスコンテナをつついて標準Facadeを差し替えたら思わぬところでドハマリした話

# TL;DR

– サービスコンテナをつついて、標準 Facade の機能を変更する実例です。
– Facadeはサービスコンテナにアクセスするのでサービスコンテナのオブジェクトを差し替えればファサードも差し替わる。
– ただしFacade は独自にキャッシュするのでタイミングによってはそれをクリアする必要がある。

# なにがしたい?

[サービスコンテナの解説記事](https://qiita.com/kd9951/items/f2157607d2f6a9534449#%E6%A9%9F%E8%83%BD%E3%82%92%E5%B7%AE%E3%81%97%E6%9B%BF%E3%81%88%E3%82%8B)で「標準機能をそっくり置き換えできる」と書いたことがあって、「[ヘルパ関数の置き換え](https://qiita.com/kd9951/items/46ef3559009ee575ea7d)」は記事にしていましたが、今回はその Facade 編です。

テーマは **「テストのときだけトランザクションを実行しないDBファサード」**。

ことの発端は、テストで使っている

元記事を表示

GoogleスプレットシートのデータをWordPressのMySQLにコピーする方法【PHPでまるっと処理】

Googleスプレットシートのデータを、WordPressのMySQLにコピーする方法を説明します。

#スプレットシートのデータをWordPressのMySQLにコピーする方法
PHPファイルでまるっと処理しますが、スプレットシートを公開してJSONファイルでデータを取得可能にした上で、WordPressのサーバからJSONを取得しにいって、MySQLにデータを流し込んでいくというのが大まかな流れです。

#前提(データセットとスプレットシートの下処理)
**【例として扱うデータセット】**
過去記事でも扱っているGoogleフォームで募った会議参加者の情報を管理することを例にあげます。

>(過去記事)
[Googleフォームで取得した画像をスプレットシートで表示する方法【セル内に画像で表示】](https://qiita.com/fuku_up/items/c99a6f711c5caa74961b)

>(参考)
今回扱うデータは[こちら](https://docs.google.com/spreadsheets/d/1SZCuyk2H7FBOxoeLp93imOlUxjBu2g

元記事を表示

PHPの文と式

このスライドは突発で開催された**PHPerKaigi Online(仮)**でしゃべるために用意されたものです。

——

## 前回のあらすじ

——

![PHPカンファレンス関西2020 【公募セッション募集について】 今年も例年どおりPHPカンファレンス関西では公募セッション枠として、有志PHPerの皆様からセッションのスピーカーを募集します。 ※LTのスピーカー募集については後日発表予定です。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4121/ea7677da-7699-49db-746c-98fa1c60d0e5.png)

——

## コードを自在に操るためのPHP文法入門

> PHPのソースコードを正確に検査したり、ソースコードの一部を書き換えたいと思ったことはありませんか? PHPにはPHP-Parserという構文解析ライブラリがあり、静的解析ツールのPHPStanやリファクタリングツールのRectorはPHP-Parserをベースにしたプラグインでソースコ

元記事を表示

受託Webサイト制作の時の開発環境

今回の開発環境の備忘録と次点として生かそうと思い投稿しておきます。

# 前提
### 案件
ボリューム:20ページくらい
納期:2週間くらい
備考:レスポンシブ(SP版のデザインはなく良い感じに)

### 業務フロー
コーディング→ローカル確認→テスト環境アップ(WebサーバにFTPソフトで)

### 開発環境(マシン、サーバ)
MacOS
MAMP

### 開発リソース
php
css
js
assets(image, font, etc)

### コンパイル
Macのシェルスクリプトでコピーやsassを走らせて成果物を作る。
具体的には、CPコマンドやインストールしたsassコマンドでsrcディレクトリからdistディレクトリに吐き出していく。watch機能もつけた。

### ディレクトリ構成

“`
site/
– dist/
– index.php(home)
– _section.php(home)
– detail/(page)…etc
– css
– home.css…etc
– js
– home.js…et

元記事を表示

?【PHP】Kubernetesの略称に慣れるためにk8sライク略称を作る関数

## この記事は?

ただのネタ記事です
Kubernetesの略称の一つである「K8s」ってのは
Kとsの間が8文字なのでk8sらしいのですがなじみがなかったので関数化しました

## 環境
PHP 7.2.21

## やったこと

“`k8s.php
/**
* K8sライクな略称を作成
*
* @param string $name 略する名前
* @return string 略称/$nameが2文字以下の場合は$nameを返す
*/
public function makeKubernetesLikeAbbreviation(string $name = ”): string
{
$prior = substr($name, 0, 1);
$posterior = substr($name, -1);

$len = strlen($name) -2;

if ($len <= 0) { return

元記事を表示

phpでファーストクラスコレクション

# phpでファーストクラスコレクションを使ってみる

## ファーストクラスコレクション is 何

クラスオブジェクトを独自クラスでコレクション化したもの

## メリット

* オブジェクトの配列を扱うコードが簡単に書けるようになる
* 配列の子要素をオブジェクトで簡単に書ける
* オブジェクト配列に対する処理(件数やフィルター)をコレクション側に定義できる
* 例えば「配列を渡して件数カウントする処理」や「特定の条件に一致するものだけ取得する」ような処理を利用者側が作らなくてよくなる

## よくある配列だらけのソース

“`php

//DBからなにがしかの一覧を取得
$saleList = Db::getSaleList();

$dataCnt = 0;
$over100List = [];
foreach ( $saleList as $saleData) {
$dataCnt++;
if ( $saleData[‘amount’] >= 100 ) {
$over100List[] = $saleData;
}
}

var_

元記事を表示

Laravel + PHPUnitでパスセグメント(パスパラメーター)を再現する

> ここのコードは実際には動作しないと思われます。
> 俺たちは雰囲気でコードを書いている。

例えば以下のようにURLを設定します。

“` php:routes.php
Route::get(‘/{user_id}’, ‘UserController@show’);
Route::get(‘/{user_id}/edit’, ‘UserController@edit’);
Route::get(‘/{user_id}/hoge’, ‘UserController@hoge’);
Route::get(‘/{user_id}/fuga’, ‘UserController@fuga’);
“`

ユーザーが存在しなければ例外とします。
必然的にUserクラスは1つしか存在してはいけないので、ServiceProviderでsingletonにします。

“` php:AppServiceProvider.php
public function boot() {
$this->app->singleton(User::class, function() {

元記事を表示

OTHERカテゴリの最新記事