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

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

【Laravel】seeder(シーダー)の使い方

#はじめに
テーブルの用意ができている前提で話を進めていきます。

seederを使うと…
####テストデータをデータベースに挿入することができます。

#seederの使い方
1) まずは、ターミナルもしくはコマンドプロンプトで以下のコマンドを実行し、シーダーファイルを作成します。

“`
php artisan make:seeder UserTableSeeder
“`

2) コマンドを実行すると、「database」内の「seeders」内に「UserTableSeeder.php」が作成されるので、runメソッドに以下のようにコードを記述していきます。

“`php:UserTableSeeder.php
public function run()
{
DB::table(‘users’)->insert([
‘name’ => ‘yusuke’,
‘mail’ => ‘yusuke@example.com’,
‘age’ => ’32’,
]);
}
“`

3) デフォルトで用意されている「D

元記事を表示

[PHP][Laravel]重い処理行うAPIの実行を止めたい

ローカルで動かしているLaravelで、重い処理行うAPIの実行を止めたい時の忘備録。
サーバー再起動やそれっぽいプロセスをkillしても動き続ける時。

### 結論

以下のコマンドで停止できる。

“`bash
$ sudo kill $(sudo lsof -t -i:8000)
“`

https://stackoverflow.com/questions/63913946/php-artisan-serve-keeps-working-even-after-i-shut-the-process-down-windows

### コマンド解説

lsofはオープンしているファイルを一覧表示するコマンド。
-iオプションで特定のポートで実行しているプロセスを表示できる。

“`bash
$ lsof -i:8000

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Google 91524 xxxxx 35u IPv4 0x6f9544b817401ad3

元記事を表示

はじめての投稿。マークダウンを練習します。

#初投稿です!
みほと申します。今からLaravelを勉強していきます。
毎日学んだことをQiitaの記事に投稿していくのでベテランエンジニアさん暖かく見守ったり辛口コメントも大歓迎です!!
反応いただけると嬉しいです。よろしくおねがいします 🙂

##今日学んだこと
【create.blade.php】

“`php
@extends(‘layouts.app’)
@section(‘content’)

モツ鍋食べたい!

@endsection
“`

元記事を表示

CodeIgniter 3 のクエリビルダで Nプレフィックスを付与する

# 環境
– CodeIgniter 3.1.11
– SQL Server 2016 SP2

# 発端
“`php
$sql = ‘
INSERT INTO user (id, name)
VALUES (
\” . $id . ‘\’,
N’ . $this->db->escape($name) . ‘
)’;
$this->db->query($sql);
“`
Nプレフィックスが必要な箇所で毎回、上記のように自力でクエリを書きたくない。

“`php
$data = [
‘id’ => $id,
‘name’ => $name
];
$this->db->insert(‘user’, $data);
“`
クエリビルダを使った際にいい感じに Nプレフィックスを付与させたい。

# 対応方法
`vendor\codeigniter\framework\system\core\Loader.php` 内の `database` メソッドを拡張する。

– `MY_Loader.php` を作成し `data

元記事を表示

グローバル変数の整理法

# 言語

PHP

グローバル変数と書きましたが、ローカル変数でも応用できます。

# 整理法1

こんなグローバル変数があるとします。

“`php
$bara = 1; //バラ
$kiku = 2; //菊
$sakura = 3; //桜
$ume = 4; //梅
$tulip = 5; //チューリップ
“`

これらを関数内で使う場合、いちいち `global $bara;` `global $kiku;` ・・・ と宣言しなければなりません。

こんな時は、関連する複数の変数を1つにまとめるとよいです

“`php
$flower = array();
$flower[‘B’] = 1; //バラ
$flower[‘K’] = 2; //菊
$flower[‘S’] = 3; //桜
$flower[‘U’] = 4; //梅
$flower[‘T’] = 5; //チューリップ
“`

関数内で使うときも `global $flower;` と1行でOKです

`$flower[0], $flower[1]` のような単なる連番だと保守性が

元記事を表示

【初回】おっさんが入門CakePHP (動画第1回~第2回)

チャンスラボの岡本です。

弊社の東京メンバーが、CakePHPの入門動画を作成して公開しているのですが
諸事情により当動画を見て勉強することになりました。

第1回:webシステムとは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/40db93d2-4a4c-df73-3320-9006360596c1.png)
動画短いな。
7分弱なんで気楽に見れるかもだが。
一応技術者として理解しているつもりなので1.5倍速で見ました。
なるほど、初心者にも分かり易いと思われる。
技術系サイト見る様な人なら抑々知っとるわい。って感じ。

—-

第2回:XAMPPインストール

WEBシステムのおさらいとXAMPPの説明を簡単にした後は
ダウンロードからのインストール
インスト

元記事を表示

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

#AWS ES2にデプロイしたPHPファイルを表示させる
AWS ES2にデプロイしたPHPファイルをブラウザ上で表示する方法についてまとめます。(少しずつ精査してわかりやすい記事にしていきます)

##手順
*パブリックサブネットにEC2を配置する
[WEBサーバー用EC2の起動からWEBページの表示まで](https://qiita.com/ebtiag/items/c75140c59d59a620f89e)
*EC2にファイルをPHPファイルをデプロイ
[ローカルPCからAWS EC2にファイルをデプロイ](https://qiita.com/ebtiag/items/dd61ef90dcccefc1066c)
*デプロイしたPHPファイルをドキュメントルートの移動する
*EC2インスタンスにLAMPサーバーをインストールする
[Amazon Linux 2 に LAMP ウェブサーバーをインストールする](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事