- 1. AWS ES2にデプロイしたPHPファイルを表示させる
- 2. 【Laravel】ページネーションの実装方法
- 3. 【Laravel】入力フォームの値の複合バリデーション
- 4. 試験するときにで便利なこと
- 5. WordPressのテンプレート中でよく使う処理<随時更新>
- 6. PHPでオートロード(spl_autoload_register)処理を行う
- 7. 【Laravel】upメソッドとdownメソッドについて
- 8. PHP TSV 配列
- 9. BOM 付き CSV ファイルを PHP で処理
- 10. 【Laravel】Laravel Socialiteを用いてYahoo JAPANのYahooID連携v2のOAuth2.0を用いた連携を行う。
- 11. 三項演算子とは
- 12. Contact Form 7 Multi-Step Formsを使用した時のIE対応
- 13. 関数やメソッドの引数の数を調べて、必須項目以外をnullで埋める際のtips
- 14. include_pathで外部モジュールを呼び出せるようにする *laradock環境*
- 15. 【AWS】EC2にWEBサーバーを立てて表示されない場合確認手順
- 16. Task Schedulerでユーザーごとに、データベースに保存した時間にコマンドを実行する
- 17. 【Laravel】テーブル作成後にカラムを追加したい場合
- 18. 【PHP8.2?】動的プロパティが禁止されるかもしれない
- 19. [PHP]json_decodeで返される値の扱い方
- 20. paygent決済システム導入(PHP編2)
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を使用して実装しました。このアドオンの使用方法は以下のサイトが一番詳しく書かれていると思います。
ところが、このアドオンは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