PHP関連のことを調べてみた2021年09月02日

PHP関連のことを調べてみた2021年09月02日

AWS ES2にデプロイしたPHPファイルを表示させる

#AWS ES2にデプロイしたPHPファイルを表示させる
AWS ES2にデプロイしたPHPファイルをブラウザ上で表示する方法についてまとめます。こちらは備忘録のため完璧に整理された記事とは言い難いです。(少しずつ精査していきます)

##手順
*Amazon Linux 2 に LAMP ウェブサーバーをインストールする
*PHPファイル内のデータベースアクセスのPDOをDBサーバのプライベートIPv4アドレスに修正する
*ドキュメントルートをデプロイしたPHPファイルのディレクトリに設定する
*データベースに接続する
“`mysql -h (プライベートサブネットにあるサーバのIPアドレス) -u (ユーザ名) -P 3306“`

##参考
*[Amazon Linux 2 に LAMP ウェブサーバーをインストールする](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html
)
*[[AWS] ドキュメントルートを変更する – Qiita](https:/

元記事を表示

【Laravel】ページネーションの実装方法

#はじめに
今回は簡単にできるページネーションの実装方法について説明します。

#ページネーションとは
たとえば、1ページに投稿を100件も表示すると、ユーザーも見づらいし、表示速度も落ちるし、システムの負荷も増えてしまいますね。
そこで、そのような長いコンテンツを複数のページに分けて表示させることをページネーションといいます。

#ページネーションの実装
1) コントローラーに以下のように記述します。

“`php:MenuController.php
public function index()
{
$menus = Menu::paginate(5);
return view(‘menus.index’, [‘menus’ => $menus]);
}
“`
`paginate`の引数に渡されている数字が1ページに表示する件数です。

2) テンプレートファイルに以下のように記述します。

“`php:index.blade.php
{{ $menus->links() }}
“`

#おわりに
これだけでページネーションを実装できるなんてびっくりで

元記事を表示

【Laravel】入力フォームの値の複合バリデーション

## やりたいこと

* Laravel で 生年月日が 年、月、日でバラバラにPOSTされるケース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21391/c030e098-1eef-1b5e-21fc-38081dc1d38e.png)

* 以下のように、単純にバリデーションすると 日付として成立しているかの検証ができない。
* 年、月、日 を 合わせて、日付として成立しているか評価したい!

“`php:example
// リクエスト例
request()->birthday_year;
request()->birthday_month;
request()->birthday_day;

// それぞれバリデーションする場合
‘birthday_year’ => ‘required|integer|date_format:Y’,
‘birthday_month’ => ‘required|between:1,12’,
‘birthday_day’ => ‘requ

元記事を表示

試験するときにで便利なこと

試験するときに便利だったことまとめます。

##Google Chromeのシークレットウィンドウ
こちらは使用している方も多いのでは。
chromeを履歴や Cookie がまっさらの状態で使用できるので、
2ユーザでログインしたい場合などに便利です。
社内システムのようなシステムでは役職や部署などによって実行権限が異なることが多いかと思います。
そのような場合に動作を確認するのに、ログイン→実行→ログアウト→別ユーザでログインといった手順で
確認するのはかなりの手間になります。
違うブラウザでログインすれば同様のことができますが、
やはり同じブラウザで確認したいことも多いのでそういった場合に活用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234640/9cf4c2b7-2890-dc59-624c-ea7aeb3644bb.png)

##権限者ごとのユーザ情報をまとめる
実際上記でもあるように、試験では様々な役職・部署の方で試験をしたい場合があるのですが、
多く

元記事を表示

WordPressのテンプレート中でよく使う処理<随時更新>

戸惑い、傷つき、誰にも打ち明けずに、悩んでた、それももう~~~~~やめ~よ~お~~♪

# POSTループ(クエリを指定)

“`php
‘post’,
‘posts_per_page’ => 3,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘slug’,
‘terms’ => array( ‘exam’ ),
),
),
);
$query = new WP_Query( $args );
?>
have_posts() ) : ?>
have_posts() ) : $query->the_post(); ?>



<

元記事を表示

PHPでオートロード(spl_autoload_register)処理を行う

#はじめに
PHPでクラスファイルを読み込んでいくと、気づいたらrequire_onceがたくさん羅列している状況に。。
これを改善する為、オートロード処理を行います。

#今回の設定
たとえば、以下のようなディレクトリ構造のとき。

“`
hoge/
├ ClassA.php
├ ClassB.php
├ ClassC.php
└ Main.php
“`

ファイルを読み込んでいくとrequire_onceがたくさん。

“`php:Main.php

元記事を表示

【Laravel】upメソッドとdownメソッドについて

#はじめに
今回は、マイグレーションファイルを作成したときに記述されているupメソッドとdownメソッドについて簡単に解説していきます。

#upメソッド
データベースに新しいテーブルやカラムなどを生成するための処理を記述する部分です。
デフォルトでidカラムとタイムスタンプの2つが既に記述されているので、その書き方にしたがって、追加したいカラムを記述していきます。

・新規登録時

“`php:作成日時_create_menus_table.php
public function up()
{
Schema::create(‘menus’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->string(‘menu_name’);
$table->timestamps();
});
}
“`

・カラム追加時

“`php:作成日時_menus_add_columns.php
public function up()
{
S

元記事を表示

PHP TSV 配列

TSVファイルを配列で表示させたいという時あると思います。
実際私も少し時間がかかってしまったため備忘録として残します。

“`test.tsv
id name type price
1001 egg food 200
1002 hook dvd 999
1003 hammer tool 300
1004 すし 食べ物 900
“`

このようなデータをPHPで読み込み配列として出力させるのがゴールです。

“`test.php

元記事を表示

BOM 付き CSV ファイルを PHP で処理

「phpでcsvを読み込んで項目名をキーにした連想配列をつくる[メモ]」
https://qiita.com/Terasan_Koshigaya/items/00ce0b114e527a572865
で紹介されている、csvToArray.php を使っていた。

“`

// csvの1列目をキーにした連想配列を返す(引数:csvファイルのパス)
function csvToArray($csvPath){
$csvArray = array();
$firstFlg = true;
$keys = array();
$count = 0;
$file = fopen($csvPath, ‘r’);

while ($line = fgetcsv($file)) {
if($firstFlg){
for($i = 0; $i < count($line); $i++){ array_push($keys,$line[$i]); } $firstFlg = false; }else{

元記事を表示

【Laravel】Laravel Socialiteを用いてYahoo JAPANのYahooID連携v2のOAuth2.0を用いた連携を行う。

自分用のメモとして残します。

#▼はじめに
Laravel Socialiteを用いてYahooJapanとのID連携を行おうと思ったら、Laravel Socialiteはデフォルトでは連携できないようだ。
本家Yahooとの連携は専用のライブラリをcomposerで入れればLaravel Socialiteが拡張される。
問題はYahooJapan用のLaravel Socialiteの拡張ライブラリは無いようで、自分で実装しないといけない模様。
んー面倒だなと思ったら、@zaburo様が投稿された[「Laravel Socialite用のYahoo JAPAN ID(YConnect)ドライバ実装」](https://qiita.com/zaburo/items/25ebbb3d1b580a0df9f3)という記事を見つけ参考にさせていただきました。。
こちらではv1用ではありますが、ほんの少し変更するだけでv2用の連携ができた。

#やり方
**注意)自分用のメモ程度に記述であり、動作保証をするものではないのであしからず。**
###0.前提
・Laravel Social

元記事を表示

三項演算子とは

#はじめに#
 今回は三項演算子について備忘録として残していきます。
そんなん常識やろ!と思われるかもしれませんがご容赦ください。

#三項演算子とは#
 三項演算子は一言で言うとif文を簡単に書くことができる演算子のことです。
例えば、

“`if.php
if($num1 > $num2){
echo ‘$num1は$num2より大きい’;
} else {
echo ‘$num1は$num2以下である’;
}
“`

このようなif文があったとしましょう。
これを三項演算子を用いて記述すると下記のようになります。

“`example.php
($num1 > $num2) ? ‘$num1は$num2より大きい’ : ‘$num1$はnum2以下である’;
“`

if〜else文を1行で書き換えることが出来ました。
 このように一つ目の式には条件式、二つ目の式(?の右隣)には条件が真の場合、三つ目の式(:の右隣)には偽の場合の式が入ります。

 公開、非公開を表すステータスや在庫の有無を確認する条件分岐などで使うと記述が短くなりますし、読みやすくなるかもし

元記事を表示

Contact Form 7 Multi-Step Formsを使用した時のIE対応

#はじめに
WordPressのContact Form7を使って、Googleフォームにみたいなステップ型のアンケートフォームを作りたいとクライアントから要望があったため、サクッと作りたかったので、ステップ分割が出来るContact Form 7のアドオンContact Form 7 Multi-Step Formsを使用して実装しました。

このアドオンの使用方法は以下のサイトが一番詳しく書かれていると思います。

長いフォームをステップ分割できるContact Form 7 Multi-Step Formsの導入方法

ところが、このアドオンはIEに対応していなかったのです。(Macばかり触ってるとIEのことはよく忘れがち)

Windowsを利用するユーザーのブラウザはほとんどEdgeになりますが、日本国内のブラウザシェア率を見ると、しぶとくもIE11が第5位にいらっしゃいますね。
https://webrage.jp/techblog/pc_browser_share/

今回は時間が無かったためIEを利用した際は、ステップ型を諦めて通常のフォームを表

元記事を表示

関数やメソッドの引数の数を調べて、必須項目以外をnullで埋める際のtips

“`php
class Hoge
{
// 引数が多い
public function getHogehoge(int $id, ?int $arg1, ?int $arg2, ?int $arg3, ?int $arg4, ?int $arg5)
{
return ‘hogehoge’;
}
}
“`

こんな引数が多いメソッド(しかも引数の数はたまに変わる)を使う際、`$id`だけ使い、それ以外nullで埋める場合の備忘録
そもそも引数をどうにかしろという言葉はぐっと堪えて下さい。。。

# 対応
“`php
// 関数の構造を格納
$refl = new \ReflectionClass(“Hoge(HogeクラスのあるPath)”);
// getHogehogeの引数の数を取得
$arg_num = $refl->getMethod(“getHogehoge”)->getNumberOfParameters();

$hoge = new Hoge();
// array_fillでnullを$arg_num – 1個分埋

元記事を表示

include_pathで外部モジュールを呼び出せるようにする *laradock環境*

# include_pathってなんやねん

PHPを使い始めてもうすぐ三か月がたちます。ようやく赤ちゃんから小学生くらいには成長したのではないかというところで、業務でドはまりしたことがありました。何がしたかったかというと、ダウンロードしてきた外部モジュールをそのまま開発環境に置いて、Controllerとかから外部モジュールを呼び出したかったわけです。でもまぁこれが思ったよりうまくいかなかったので覚書として。

## 状況説明

簡単にですがディレクトリ構造を再現してみました。外部モジュール内にあるphpファイルを`sampleController.php`で呼び出すことが目標です。

“`
app
├─Http
| └─Controllers
| └─sampleController.php
├─Models
└─外部モジュール
└─packageQ
├─A
| └─A.php
├─B
| └─callA.php
└─C
└─callAB.php
“`

“`A.php

元記事を表示

【AWS】EC2にWEBサーバーを立てて表示されない場合確認手順

##◆ 目的
EC2にWEBサーバーとDBサーバーを立てた時に、なかなか表示されず困ったことを今後のためにメモ。
確認手順や表示されない可能性を記述します。

“何が問題か分割して原因を探る“
・ネットワーク
・サーバー環境
・ミドルウェア(Apache、PHP、Composerインストールもれ、設定ミスなど)
・ソースコード

##◆ ドメインを叩いて想定している画面が表示されない時

###1)ErasticIPをアドレスバーに入れて表示できるかチェック
“表示されてたらAppacheの設定はOK“
 (ドメインで叩くと表示されない場合以下チェック)
・DNSの設定
・Route53の設定
・セキュリティーグループ設定(HTTP 80/HTTPS 443)

“ErasticIPで何も表示されてなかったらAppacheに問題があるかも。“
・Appacheの設定ミスの可能性 → ②

###2)Appacheの設定チェック

“/var/www/sample_site/public/“
ここに index.html 中に 「hello」 とか記述しといてちゃんと上

元記事を表示

Task Schedulerでユーザーごとに、データベースに保存した時間にコマンドを実行する

プログラミング初心者です。

##開発環境
Laravel 5.8
PHP 7.3.24
MAMP

##やりたいこと
Kernel.phpに、ユーザーごとに「毎日」、かつ「データベースに保存した時間」にコマンドを実行させるように実装したい。
参考サイト[こちら](https://qiita.com/nicopinpin/items/29dbdd666433253839ce)

##1 Migrate
まずユーザー側から設定された時間を保存するための、migrateファイルを作成します。

“`create_samples_table.php
class CreatePushesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘samples’, function (Blueprint $table) {
$ta

元記事を表示

【Laravel】テーブル作成後にカラムを追加したい場合

#はじめに
テーブル(マイグレーションファイル)を作成した後に、カラムを追加したくなるときってありますよね。
私は、Laravelを学習し始めた頃、既に作成しているマイグレーションファイルにカラムを追加して、もう1回`php artisan migrate`すればいいんじゃないのって思っていました。
しかし、それでは`rollback`するときに、downメソッドによりテーブルが削除されてしまうので、それまでにテーブルに格納していたデータがなくなってしまいます。
そこで、以下の方法でカラムを追加していきます。
#カラムの追加方法
ターミナルもしくはコマンドプロンプトを起動し、

“`
php artisan make:migration –table=[テーブル名] [マイグレーションファイル名]
“`
を実行してマイグレーションファイルを追加します。
追加したマイグレーションファイルにカラムを追記して、`php artisan migrate`を実行すると、カラムを追加することができます。

#マイグレーションファイルのupメソッドの記述
・テーブル作成用

“`php:作業

元記事を表示

【PHP8.2?】動的プロパティが禁止されるかもしれない

[ゆるふわPHP絶対殺すマン](https://qiita.com/rana_kualu/items/c1b5397f9232d4c38f91#%E6%84%9F%E6%83%B3)である[Nikita Popov](https://github.com/nikic/)が、いよいよ本気を出してきました。

“`php
$dt = new DateTime();
$dt->hoge = 1;
var_dump($dt->hoge); // 1
“`

PHPでは未定義のプロパティに値を突っ込むと、特に何の抵抗もなくプロパティが生えます。
しかし、他の多くの言語ではこのような動作にならず、未定義プロパティを突っ込もうとするとエラーになります。
ということでこれを禁止しようというRFCが提出されました。

以下は[Deprecate dynamic properties](https://wiki.php.net/rfc/deprecate_dynamic_properties)のRFCの紹介です。

# PHP RFC: Deprecate dynamic properties

元記事を表示

[PHP]json_decodeで返される値の扱い方

PHPのjson_decode()について忘備録。
第二引数に指定した値によって型が変わる。

“`php
json_decode($json, true); //返される型は連想配列形式
json_decode($json, false); //返される型はobject形式
json_decode($json); //JSON_OBJECT_AS_ARRAYが設定されているかどうかによって決まる
“`

https://www.php.net/manual/ja/function.json-decode.php

## 連想配列形式

第二引数がtrueの場合、型は連想配列。

“`php
$json = ‘{“foo”:1,”bar”:2,”foo-bar”:3}’;

$result = json_decode($json, true);

echo(gettype($result)); // array
“`

中の値を取り出す場合は配列のキーを指定して呼び出す。

“`php
$result[“foo”];
“`

## オブジェクト形式

第二引数がfalseの

元記事を表示

paygent決済システム導入(PHP編2)

#趣向
PHPでpaygent決済システム導入を導入機会が
あったためゆらりと述べていこうと思います。

#PHP編1の続き
このページではペイジェントオンライン(試験環境)へのアクセスまでの流れを説明します。
ペイジェントオンラインはクライアント証明書をインストールしなければアクセスできません。

試験環境接続キットの中にある、pfxファイルを開きます。
押下するとパスワードを聞かれるため、入力。

![スクリーンショット 2021-08-30 18.35.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/843952/9fb7755d-6e11-6b2c-b8e2-49bfc08d713b.png)

証明書を追加する。
キーチェーンはログインにする。
![スクリーンショット 2021-08-30 18.36.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/843952/5f5d17ce-a88e-2bc9

元記事を表示

OTHERカテゴリの最新記事