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

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

WordPress ninjaテーブルを使ってショートコードでデータを呼び出す方法

MySQLにオリジナルテーブルを作ってデータを呼び出す方法もありますが、
そこまで複雑なことをしない場合は、データテーブルプラグインを使って
データを呼び出した方方が比較的簡単に実装できると思います。

ここでは、ninjaテーブルを使って呼び出してみたいと思います。

## 流れと設定方法
//——ninjaテーブルを使った値の呼び出し方————-
//プレフィックスを設定してください
//記事の中からショートコードで呼び出す
//ショートコード[nintbl table番号 条件項目 条件項目の値 取得フィールド]
//例えば、tabel番号が92でid=1のレコードのprice項目の値を取得する場合 [nintbl 92 id 1 price]
//注1 複数レコードが該当するような条件は利用できない
//注2 部分検索を利用している似たような項目名を付けない(price_max,price_min)
## ショートコード
“`sample.html
[nintbl table番号 条件項目 条件項目の

元記事を表示

【初心者用】Laravelのお勉強

# これは何?
エンジニア歴半年の新米がLaravelについて勉強した備忘録です。
何かの参考になれば幸いです。

# 全体のファイル構造
– composer.json → phpファイルの依存関係解決
– package.json → javaScript、フロントエンドの依存関係解決

# ライフサイクル

1. autoloadを読み込んで、requireしなくても名前空間を指定するだけで良くなる
1. Applicationインスタンスを作成(サービスコンテナ)、サービスプロバイダも読み込まれる
1. HttpKernelインスタンスを作成
1. Requestインスタンスを作成
1. HttpKernelがリクエストを処理してResponseを取得
1. レスポンスを送信
1. terminate()でリクエストとレスポンスを削除

# サービスコンテナ

依存関係を自動で解決してくれる。
依存関係のさらに先の依存関係まで全部解決してくれる。
app()はサービスコンテナを呼び出すヘルパ関数。

コンテナへの登録

“`php
app()->bind()

// 1度

元記事を表示

13: 比較演算子, 厳密な等価演算子

比較演算子

左辺と右辺の値を比較し、その結果をtrue/falseとして返す。(下記)
比較演算子は、if, while, do〜whileのような条件分岐/繰り返し命令で条件式を表すために利用する。

主な比較演算子

|演算|概要|用例|
|:-:|:-:|:-:|
|`==`|左辺と右辺の値が等しい場合はtrue|`7 == 7 →true`|
|`===`|左辺と右辺の値が等しく、かつ、同じデータ型である場合はtrue|`7 === ‘7’ →false`|
|`!=`|左辺と右辺の値が等しくない場合にtrue|`7 != 7 →false`|
|`<>`|左辺と右辺の値が等しくない場合にtrue(「`!=`」と同じ)|`7 <> 7 →false`|
|`!==`|左辺と右辺の値が等しくない、または同じデータ型でない場合にtrue|`7 !== ‘7’ →true`|
|`<`|左辺が右辺より小さい場合にtrue|`7 < 10 →true`| |`>`|左辺が右辺より大きい場合にtrue|`7 > 1

元記事を表示

ターミナル を使ってローカルホストを利用する

1. index.phpが入っているディレクトリを、カレントディレクトリにする。

2. 以下のコマンドを実行する。
php -S localhost:8080

3. ブラウザのウィンドウに、”localhost:8080”と入力。

元記事を表示

# [PHP]int型の限界値越えるとfloat型に勝手に変換される

# はじめに

PHPでテストをしてて「ん?」っと若干つまづいたコトがあったので、メモ

※結論はタイトルの通り

## 前提

– PHP 8.0.1
– Laravel 8.0.2

# やりたいこと

以下のメソッド(Laravelのアクセサ)についてUnitテストしたい

“`App/Models/UserAttributes.php
/**
* payment_amount_sumの整形アクセサ.
* @return string
*/
public function getPaymentAmountSumFormatAttribute()
{
return number_format($this->payment_amount_sum).’円’;
}
“`

UserAttributeモデルの`payment_amount_sum`プロパティをただ「*,***円」の形に整形するというメソッド

# やったこと

以下の定数とテストメソッドを書いて実行した

“`App/Tests/Units/UserAttributes.php
/**
* getPa

元記事を表示

PHP で計算すると起こるわかりにくい現象

# これは何?

64bit 環境では、PHP の整数型が 64bit であることを知って驚いたので、そこに起因する不思議なことを見ていく。

# 基本的な動き

PHP は、整数型の値を整数型の値で割ると、整数じゃなくなることがある。

“`php:PHP8
10.000000/8.000000=1.250000
“`

そして、JavaScript と異なり、型も変わる。

“`php:PHP8
integer/integer=double
“`

さらに。
Python3 の `/` と異なり、除算結果が整数だと型は double にならない。

“`php:PHP8

元記事を表示

Laravel8 personal_access_tokens のマイグレーションを無効化する

## Laravel 8.6.0 以降、Laravel Sanctumがなぜか標準搭載

– https://github.com/laravel/laravel/pull/5663
– https://github.com/laravel/laravel/releases/tag/v8.6.0

Laravel9にも `laravel/sanctum` がプリインストールされています。

– https://github.com/laravel/laravel/blob/9.x/composer.json

(なんでなん…?)

## マイグレーションファイルを消してもテーブルが生成される

https://github.com/laravel/laravel/blob/9.x/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php

Laravelをインストールすると `database/migrations/2019_12_14_000001_create_personal_a

元記事を表示

formタグだけじゃない$_POST

formタグにおいてpostメソッドを指定するとフォームに入力された値が連想配列としてPHP $_POSTで使用出来るというのがこれまでの理解でした。

今回jQueryのAjaxでもPOST送信が出来て、PHP $_POSTで使用可能と学んだので備忘録とします。

“`Javascript
$.ajax({
url: ‘xxxxxx’,
type: ‘post’
data: {‘fruits’: apples},
})
“`
上記の場合宛先となるurl(‘xxxxxx’)にdata(‘fruits’: apple)をPOST送信することができ、
PHPでecho $_POST[‘fruits’]する事でapplesが出力されます。

元記事を表示

【PHP】PHP5でusortの比較結果が等しくなる要素の時に配列の並び順が変わってしまう

# 結論
usortの比較結果が等しくなる時(callbackが0を返す時)は配列の順番は変わらないと思っていたがPHP5ではそれが変わってしまう。
※公式ではPHP8.0.0より前のバージョンで起こるとのこと。

https://www.php.net/manual/ja/function.usort.php

# 試したこと

## 検証コード
“`php
$vals = [‘first’, ‘second’, ‘third’];

usort($vals, function($a, $b) {
return 0;
});

print_r($vals);
“`

## 期待した出力
“`php
Array
(
[0] => first
[1] => second
[2] => third
)
“`

## 実際の出力
“`php
Array
(
[0] => third
[1] => second
[2] => first
)
“`

# PHPのどのバージョンから並び順が変わるかを確認した
[3V4L](htt

元記事を表示

パスワードのテストでHash::check()がtrueを返し続けた件。

“`
$this->assertTrue(Hash::check($password, User::latest()->first()->password));
“`

なぜ?あぜ?と思ったが、原因は、

“`
User::latest()->first()->password;
“`
で、最後のレコードが取れていないことが原因だった。というのもテストでは複数のレコードにおいてcreate_atの時間が同じになるので、結果、一番最初のレコードが取れてきてしまっていた。

で、解決策はこれ。

“`
$this->assertTrue(Hash::check($password, User::all()->last()->password));
“`
これで、最後のレコードのパスワードがとれるようになった。めでたしめでたし。

元記事を表示

Composerとは

ライブラリ依存管理ツール。
PHPで開発するにあたって、便利なライブラリやフレームワークをまとめてインストールできる。
よって、開発者がひとつひとつインストールしなくても、同じ環境を再現できる。

# インストール方法
ターミナルからDownload Composerのコマンドを入力
https://getcomposer.org/download/

# 実行パスが通るように`composer.phar`を移動する
`ほにゃららパスcomposer`とかかなくても`composer`で実行できるよう移動する
`sudo mv composer.phar /usr/local/bin/composer`

# 動作確認
`composer -V`

# 参考サイト
https://hirooooo-lab.com/development/install-composer/

元記事を表示

PHP fainal定義

# finalメソッド・final定数
PHPにおいて、finalで定義されたメソッドや定数は子クラスから上書きできない。

“`php

元記事を表示

【PHP】ファイル操作系いろいろ

# basename() ファイルパスからファイル名を取得する。
参考:http://www.openreference.org/articles/view/496
“`php:basename
basename( “/tmp/file/hoge.txt” ); // => “hoge.txt”
basename( “/tmp/file/hoge.txt”, “.txt” ); // => “hoge”
basename( “/tmp/file/ ); // => “file”
“`
# rename() ファイルを移動する。
参考:https://www.flatflag.nir87.com/copy-895
“`
dir
├─ tmp
│ └─ hoge.txt =>これをfileに移動したい。
└─ file
“`

“`php:rename
rename(‘tmp/hoge.txt’, ‘file/hoge.txt’);
“`

# unlink() ファイルを削除する。
参考:https://www

元記事を表示

【PHP/継承】クラス内のpublic変数宣言はコンストラクタより先に行われているのだった

PHPのライブラリの継承ラッパーを作っていて認識違いでハマったのでメモ。

# 状況
例えばこんなライブラリがあり。
基本的にはライブラリ内のコードには手を出したくないので、ここには調整は入れませんが、
デフォルトで $hensuu という変数が存在(ここでは宣言のみ)しています。

“`php:Library.php
class Library_sample {

var $hensuu;

public function test(){
//なんやかんや
}

}
“`

で、それを継承するラッパークラスを作りました。

“`php:Hoge.php

class Hoge extends Library_sample{
public $hensuu = true;
public $hensuu2 = true;

public function __construct()
{
parent::__construct();

}

“`

このラッパークラス「Hoge」で変数、$hensuuにtrueをセットしています。
ついでに

元記事を表示

LIKEをbindしようとしたら二度怒られた。

# LIKE検索をPHPからしたい。
bindなんたら~でLIKEを書いたら怒られた。
“`php:おこられた書き方.php
$sql = “select * from table where hoge like %:value% “;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(“:value”, $value, PDO::PARAM_STR);
“`
# え、これも違うのか。
文字列扱いだからクォーテーションがいる!とか思った。
“`php:こりてない書き方.php
$sql = “select * from table where hoge like ‘%:value%’ “;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(“:value”, $value, PDO::PARAM_STR);
“`
# %も変数に入れてください?
すみませんでした。。。
“`php:ごめんね.php
$sql = “select * from table where hoge like :v

元記事を表示

Laravel AmazonSNSでSMS送信

こちらの記事を参考にしています。AWSの設定は省きます。
https://codeeee.net/posts/laravel-amazon-sns-send-sms

AWSのパッケージをcomposerでインストール。
“`
COMPOSER_MEMORY_LIMIT=-1 composer require aws/aws-sdk-php-laravel
“`

プロバイダ追加
“`php:config/app.php
‘providers’ => [
//…
Aws\Laravel\AwsServiceProvider::class,
],
“`

コマンドで設定ファイルを作成
“`
php artisan vendor:publish –provider=”Aws\Laravel\AwsServiceProvider”
“`

以下にファイル設定が作成される
“`php:config/aws.php
‘credentials’ => [
‘key’ => env(‘AWS_ACCESS_KEY_ID’, ”),

元記事を表示

Laravel 共通関数作成

コントローラー等で使いたい共通関数の作成方法。
app/ 直下にフォルダを作成しその中にファイルを作成。今回はLibraryフォルダを作成した。

“`php:app/Library/Hoge.php
App\Library\Hoge::class,
“`

コントローラーから呼び出し
“`php:app/Http/Controllers/UserController.php
\Hoge::huga();
“`

元記事を表示

PHP 今更ながらオブジェクト指向を自分自身に向けて解説してみた ~基本編~

# 概要

– かなり前に下記のような記事を記載したが、まとめただけでちゃんと理解できていなかった気がするのでもう一度記載する。
– [PHP Laravel オブジェクト指向 用語集](https://qiita.com/miriwo/items/974adcee45f699553cd4)

# 前提

– 下記サービスを用いて検証を行った。
– [https://paiza.io/](https://paiza.io/)

# 内容

### クラス

– オブジェクト指向の説明でよく「設計図」と言われるもの。
– 設計図と言われるけどそんなにたいしたものではなく、中に関数とか変数とかを入れておいて使い回せるようにしたものである。
– 基本的に一個の.phpファイルに一個のクラスを記載する。
– .phpファイルのファイル名はクラス名と一致させる。
– わかりにくくなるため推奨はされないが一個の.phpのファイルに複数のクラスを定義することもできる。
– 下記のように定義する。(クラス名はパスカルケースで記載する)

“`php

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part10

qiitaの草を増やした結果、githubの草が除草されました私です

胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編
公式ドキュメントの言う通り、パッケージをインストールされたら、Inertia.jsが導入されて???になった編
マルチログインを作ってみた編
デザインをtailwindcssに丸投げする編
Laravel api.phpに記載したURLがデフォルトで/apiついてしまう件

LaravelでAPI作成のした際にルーティングでroutes/api.phpに記載すると /api/〜になってしまう。

/api部分を無くすためには以下を削除すればいい。

“`php:app/Providers/RouteServiceProvider.php
Route::prefix(‘api’) //prefixを削除
->middleware(‘api’)
->namespace($this->namespace)
->group(base_path(‘routes/api.php’));
“`

これと同じ挙動でweb.phpなどでも活用できる
“`php:
Route::prefix(‘user’)->group(function () {
Route::post(‘/’, ‘App\Http\Controllers\UserController@index’);
Route::post(‘create’, ‘App\Http\Controllers\UserController@create

元記事を表示

OTHERカテゴリの最新記事