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

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

関数やメソッドの引数の数を調べて、必須項目以外を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

元記事を表示

Amazon SP-API(セリングパートナーAPI)をPHP ノンフレームワークで実装してみた

Amazon「SP-API」は利用開始まで非常に難易度が高く、参考になるドキュメント自体が難解で非常に困ってたので、何かの役に立てばなと思い投稿しました。

##SP-APIって?
Amazonは、これまで出品用時に利用できるAPIとしてMWS-APIを提供していましたが廃止がきまり
後継として「セリングパートナーAPI(SP-API)」が登場しました、MWS-APIから移行?(作り変えかな、、、)する必要があります。

https://developer.amazonservices.jp/

ただ、大きな問題があります。
公式からドキュメントは提供されているのですが、GitHubをそのまま見てね状態です。

https://github.com/amzn/selling-partner-api-docs

英語直訳の日本語、サンプルソースもほぼ皆無。
C#とかのサンプルは見つけたけど、こっちはPHP使ってるし。。。。
素人にはもちろんのこと、AmazonのAPI関連扱ったことがない人は、ハードル高すぎます!

そこで今回、必要にかられてAPIの移行が必要となったため「SP-APIを

元記事を表示

PHPで超ミニマムお問い合わせ画面を作る

PHPでのメール送信について説明する機会があったので、最小限のサンプルをここにも書いておきます。
さくらのレンタルサーバ ライトプラン(PHP7.4)で動作確認しました。

# 対象の読者
– 「お問合せ」画面の仕組みを作りたい(サイトに訪れた人が「お問合せ」画面で入力し、「送信」ボタンを押すと管理人にメールが届く)
– PHPが動くサーバがある

# mb_send_mail とは
PHPに最初から備わっている「メール送信ができる関数」。
詳しくは[リファレンス](https://www.php.net/manual/ja/function.mb-send-mail.php)を参照。

# 確認してみる
メール送信の部分だけを確認するため、余分なところは省いていますが、このままコピペでも動きます。
(さくらのレンタルサーバであればwwwフォルダに以下の2ファイルを作成して、 http://ドメイン名.sakura.ne.jp/test.html で確認できます。)

### test.html

“`html

元記事を表示

読み込み系【PHP】

こんにちは!
毎週日曜日にqiitaに記事をアップすることを
目標として掲げていましたが‥。
実は土曜日に2回目のワクチン接種の影響で
日曜日はずっと高熱と戦ってました。

今回もPHPで新しいことを習ったのでその
アウトプットアウトプット

# file_put_contents

情報をファイルに保存できるファンクションです。
これを使えば様々な内容をファイルに書き込むことが可能です。

“`php

“`

# file_get_contents

ファイルを読み込むことのできるファンクション

“`php

“`

同じくファイルを読み込みたいだけなら
readfileというファンクションを使うこともできます。

“`php
readfile(読み込みたいファイルのパス);
“`
しかし、readfileの場合は
読み込んだファイルを再加工したり、
受け取った内容を使ってプ

元記事を表示

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

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

#環境
PHP: 7.0.3
※PHP7系なら大丈夫です。

#はじめに
このページではpaygentのモジュールの動作確認が完了するまで説明します。

#1.試験環境接続キットを入手する
![スクリーンショット 2021-08-30 10.22.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/843952/fb378fc0-7754-e960-0102-dde69e5d550e.png)
![スクリーンショット 2021-08-30 10.24.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/843952/7cb2c450-a6d0-54d2-ffcf-820aa0bfc528.png)
まずは画像の通り、試験環境ボタンを押下し、自身の試験環境を設定します。
設定したら3日程度で試験環境接続キッド.zipを

元記事を表示

【個人開発】ネットで調べ物するたびに、タイトルとアドレスをメモれるツールを作って10年以上使っている話

たいした技術力はないのですが、個人開発の簡単なサンプルとして紹介したいと思います。

## Webコピ太郎とは

[Webコピ太郎](https://www.catch.jp/program/copy-taro/)は、いま見ているWebページのタイトルとアドレスを取り出すだけのツールです。

1. Webページを見ているとき、メモっておきたいと思ったら、このツールを呼びだす
2. ページのタイトルとアドレスを抽出して、テキストボックスに表示
3. クリップボードにコピー

![copy-taro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86880/cb0eae92-8887-d3eb-5a05-92abc890bf19.png)

## なぜ、このツールを作ったのか

ネットで調べ物をする度に、役立ちそうなページのアドレスとタイトルをコピペして、テキストファイルにメモするなんてありませんか?

たくさんの参考ページをメモろうとすると、何度もタイトルとアドレスをコピーするのでたいへん面倒くさい。

元記事を表示

PHPでFizzBuzz

###概要
FizzBuzz問題を解く機会があったので、PHPで書いてみました。

## ルール
1〜100までで
3で割り切れる時は、「Fizz」を表示。
5で割り切れる時は、「Buzz」を表示。
3と5で割り切れる時は、「FizzBuzz」を表示。
その他は、数字を表示する。

## コード
“`index.php

“`
## 結果
“`
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19

元記事を表示

WordPressでカスタム投稿の新着順にユーザー一覧を作成する

`get_users`を使えば、ユーザーの一覧を取得できます。
[関数リファレンス/get users
](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_users)

ユーザーID、登録日でソートすることはできけど、カスタム投稿の新着順にソートするできないみたい。

検索してみても、同じようなことをしてるサイトが見つからなかったけど、やってみたらできたので、それのメモ。

## 完成形

まずは完成形を。

“`
‘ID’,
‘order’ => ‘ASC’,
];
$users = get_users($args);

foreach ($users as $user){
$uid = $user->ID;
$usernicename = $user->use

元記事を表示

【初心者向け】バリデーションについて〜Laravel〜

今回は、バリデーションの概要と設定方法、エラーメッセージの表示方法について説明します。
#バリデーションとは
バリデーションとは、ユーザーが入力した情報がその仕様や文法などに照らして適切な形式で記述されているかをチェックするための仕組みです。
たとえば、数字で入力してもらいたい年齢欄に名前を漢字で入力されたらサービスの提供を適切に行えなくなってしまいますよね。
それを防ぐためにバリデーションを利用します。

#バリデーションの設定方法
コントローラーのアクション内に以下のように記述すれば、バリデーションを設定することができます。

“`php:〇〇Controller.php
$rules([
‘連想キー(カラム名)’ => ‘バリデーションルール’,
]);
$this->validate($request, $rules);
“`

複数のバリデーションルールを設定したいときは、「|」を使って繋げて記述します(例:’required | max:500’)。

バリデーションは、送信された情報が要求した形式に合致していなかったらフォーム画面が再表示される仕様になっている

元記事を表示

composer require -w tymon/jwt-authがエラー

#趣向
composer require -w tymon/jwt-auth を使用するとエラーが出てしまい
jwt-authをインストールすることができなかった。
Laravel: 8.40
PHP: 8.0

#エラー
下記のエラーがでてしまう。

“`
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Root composer.json requires tymon/jwt-auth ^0.5.12 -> satisfiable by tymon/jwt-auth[0.5.12].
– tymon/jwt-auth 0.5.12 requires illuminate/support ~5.0 -> found illuminate/support[v5.0.0, …, 5.8.x-dev] but these were not loaded, likely because it conflicts with another r

元記事を表示

【MAMP】PHPのPath設定(.zprofile)

まず、ルートディレクトリに移動します。

“$ cd“

下記を記述してパスを通します。
php7.3.27の部分は、自分の使っているMAMPのPHPのバージョンに変更して下さい。
“$ export PATH=/Applications/MAMP/bin/php/php7.3.27/bin:$PATH“

最後に、下記コマンドを打ち込み設定を反映を反映させます。
“$ source ~/.zprofile“

PHPのバージョン変更が反映されているか確認してみましょう。
“$ php -v“

元記事を表示

Cookie にSession 情報保存されない?そう、デフォの api.php ならね。

#はじめに

Laravel 6で開発してて詰まったことあったので備忘録で残しておきます。

# やりたかったこと

## Session 情報をcookie に保存したかった。

下記のようなコードを書いた。

“`php:api.php
Route::post(“set_token”, “Controller@setToken”);
Route::get(“fetch_token”, “Controller@getToken”);
“`

“`php:Controller
public function setToken(Request $request){
session()->put(‘token’, $token);
}

public function getToken(){
$token = session()->get(‘token’);
return response()->json([‘token’ => $token]);
}
“`

シンプルなセッション情報の保存と、別リクエストでのその情報の利用です。

でもな

元記事を表示

Logファイルの権限エラーの解決方法(Laravel)

プログラミング初心者です
##環境
Laravel 5.8
PHP 7.3.29
AWS EC2 にてデプロイ

##問題
データ処理送信を行う際、loggerメソッドでlogを記載しようとしたが、当日のLogファイルのPermision Deniedつまり権限エラーが出てしまいました。
“`$ php artisan“`実行時も同様のエラーが出ました。
以下エラー例文です。

“`
UnexpectedValueException : The stream or file
“/test/laravel/storage/logs/laravel-2021-01-01.log” could not be opened: failed
to open stream: Permission denied
“`

##やってみたこと
ターミナルで以下を入力します。
storageディレクトリの権限を777に変更します。
chmodの権限について[こちら](https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95)の記事が詳しいです。

元記事を表示

OTHERカテゴリの最新記事