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

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

直前のリクエストURLからクエリパラメータを抽出

### リクエストクラスのquery()メソッドと同様の結果にしたい
“`
use Illuminate\Http\Request;
$request->query()
“`

array:1 [▼

“email” => “desc”
]

# 直前のリクエストURLからクエリパラメータを抽出
`parse_url(url()->previous())`
laravelヘルパのurl()から直前リクエストのurlを取得後にphpのparse_url関数で以下の形で取得できる
array:1 [▼
“scheme” => “http”
“host” => “http://localhost”
“path” => “/sort/index”
“query” => “email=desc”
]
ここから必要なqueryの値を取得して無理やり「=」で区切り、配列にする
その配列の最初をkeyにして最後をvalueにすることで、query()メソッドと同様にした
“`
$query = exp

元記事を表示

HTMLのinputの配列は key が指定できる

## はじめに
inputで入力された値をphp側で把握してdbに登録したいようなケースがあるよな(例えばマスタとして全量が登録してあって、そのなかから取り扱ういくつかを選択して、以降は選んだものだけを表示する管理画面みたいなやつな)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/27982df3-3863-99d7-5e2b-8801ce9d1e74.png)

探すと `name=”use_cert[]”` みたいにやるんだぜ、って出てくるんだけど、配列の index は 0ベースである。stackoverflow を当たっても javascript で上書きするようなやり方しかねぇ。
・・・上書き?:rolling_eyes: ふとひらめいた

https://www.google.com/search?q=html+input+%E9%85%8D%E5%88%97&oq=html+input+%E9%85%8D%E5%88%97&aqs=chrome..69i57j0

元記事を表示

PHP の BC Math 関数のわかりにくい間違え方

# これは何?

https://qiita.com/takogaki/items/5cb37b157b2a612ffa93

を拝見し、へー PHP には `bcadd` `bcmul` とかいう関数があるんだへーと思い。
動作確認したら想像と違っていたのでその記録。

# BC Math の特徴

[bcadd の公式ドキュメントらしきもの](https://www.php.net/manual/ja/function.bcadd.php) を見ると分かる通り、 `bcadd` などの引数は文字列になっている。return value も文字列。
そうでないと困る。

# 気になったこと

## 引数は文字列にする必要がある

公式でない文書にはよく

“`php:PHP

元記事を表示

マーカーをバインドしてSQLインジェクション対策

PHPにてSQL INSERT文を実行するにあたりSQLインジェクション対策を行うために。
SQLクエリを作成。VALUES()の中の値はマーカー’?’とする・・・①
Prepared statementに作成したクエリを登録。・・・②
作成したマーカーにパラメータをバインドする。・・・③
“`php
prepare(“INSERT INTO team (player) VALUES (?)”); //①、②
$statement->bind_param(“s”, $player); //③
?>

元記事を表示

PHPでIteratorパターン実装しようとしたら、すでに便利なやつらがいた

ある日、Iteratorパターンで実装しようとInterfaceを書きかけた時、こんな記事が見つかりました。
[PHP でイテレータを使って関数型プログラミングっぽい雰囲気を出す: range 編](https://qiita.com/Hiraku/items/14722922441f9ed3fbbb)

どうやらPHPには既にIterator達が実装されており、よしなに使うことができるらしい。。。
Interfaceの中身を見ると、少しAggregateで実装すべきメソッドが多いし、ちょっと面倒だなと思ったところ、こんな記事が見つかりました。
[Iteratorをimplementsする奴は情弱。IteratorAggregateを使え](https://qiita.com/Hiraku/items/14722922441f9ed3fbbb)

見てみるとサクッと実装できて便利!と思ったので、思わず記事にしちゃいました。

## そもそもIteratorパターンとは??
繰り返し処理のためのデザインパターンです。
反復処理を内部の処理によらないようにできるのがメリットですね。

クラ

元記事を表示

laravel RefreshDatabase 高速化

laravelのRefreshDatabaseが時間がかかるため、高速化したはなし

# 環境
“`
laravel: v5.5.50
phpunit/phpunit: 5.7.27
“`

# 原因
“`:vender/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php
//…

/**
* Refresh a conventional test database.
*
* @return void
*/
protected function refreshTestDatabase()
{
if (! RefreshDatabaseState::$migrated) {
$this->artisan(‘migrate:fresh’);

$this->app[Kernel::class]->setArtisan(null);

Ref

元記事を表示

PHP traitの継承的な書き方

traitの継承的なやり方について、適切な記事がなかったので自分なりのまとめ

# php version
“`:bash
bash-4.2# php -v
PHP 7.1.33 (cli) (built: Oct 31 2019 17:37:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
“`

# traitの継承的な書き方

“`test1.php

元記事を表示

【PHP】Google SheetsAPI で Fatal error: Uncaught TypeError: count():

# API接続がローカル環境のPC上では動いていたのに、windows server 2012上ではエラー。

## エラー内容
“`:エラー内容
Fatal error: Uncaught TypeError: count(): Argument #1($value) must be of type Countable| array, null given in C: \xampp\htdocs\example\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php: 67 Stack trace:
“`
## 解決
以下ページでCurlFactory.php のcount()が正しくない状態との解説。
https://github.com/googleapis/google-api-php-client/issues/1392
/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php の
67行目のif文の書き出しを以下に変更することで解消。

“`php:CurlFacto

元記事を表示

デバッグについて

:::note info
こんにちは!
ブログ、記事二日目!
今日の記事はデバッグについて勉強したことを書いていきたいと思います!
では、早速!
:::

デバッグとは

コンピュータプログラムのバグや欠陥を見つけ出しそれらを排除し通常の仕様にする作業のことです。
英語ではdebugと書きましてbugは欠陥という意味なので結構覚えやすいですね!
作業を簡単にするためのソフトウェアデバッガーなどあるみたいですね、追々調べて行きたいと思います。

デバッグの使い方について

言語によってやり方は変わってくるのですが、PHPとJavaScriptのデバッグの使い方について書いていきます。
まずPHPのデバッグのやり方です。
PHPはvar_dump関数を使います。この関数は変数の中身や条件分岐を確認できます。変数の中身が配列だとしても、キーと値をしっかり表示してくれます。

> PHPデバッグの書き方

$debug = ‘デバッグ’;
var_dump($debug); 

// 結果
string(6)

元記事を表示

[PHP] 改行コード指定のPHP_EOL 注意点

PHPで、外部API呼出しの処理を書いた時にハマったのでメモです。

PHP_EOLとは。。。
“`OSで異なる改行コードを環境に合わせて自動変換してくれる関数です。“`

##### OSごとの改行コード
この関数を利用する時には、必ずこれを意識してください。
そうしないと、ハマります。
| OS | 改行コード |
|:–:|:——-:|
|Windows| CR+LF(\r\n) |
|Mac| CR(\r) |
|Linux| LF(\n)|

これを利用すると、下記の通り変換が入るということです。
“`shell
// Linuxだと、\nで改行
echo “this is the new-line” . PHP_EOL

// Macだと、\rで改行
echo “this is the new-line” . PHP_EOL

// Windowsだと、\r\nで改行
echo “this is the new-line” . PHP_EOL
“`

#### 注意点
実行するOSで改行コードが異なるということは、外部サービスなどを使う時は使

元記事を表示

php: 参照渡し

引数の変数に&を付けるとリファレンス渡しになる。
グローバル変数のように扱えるが可読性は悪くなる。

https://www.php.net/manual/ja/language.references.pass.php

## 値に参照
“`php
function increment(&$var)
{
$var++;
}

$a = 0;
increment($a);
echo $a; // 1

increment($a);
echo $a; //2
“`

## また関数をリファレンス渡しすることもできる
“`php
function increment(&$var)
{
$var++;
return $var;
}

function &reference()
{
$a = 0;
return $a;
}

$a = increment(reference());
echo $a; // 1
“`

## 配列やオブジェクトの参照
少し面白い。
配列は参照できないが、objectは参照渡しできるみたい。

“`php
funct

元記事を表示

11: 浮動小数点数の演算に注意, 代入演算子

浮動小数点数の演算に注意

浮動小数点数を含んだ演算子は、時として意図した結果を得られない場合がある。

たとえば↓

“`
無限循環少数となる。

結果として、(0.1 + 0.7) * 10も、内部的には7.9999999999999991118……………のような値となり、正しい結果を得られない。

このような問題を避けるには、任意精度数学関数を利用する。

“`

元記事を表示

Laravelで現在表示中の記事(News)の前後のIDを簡単に取得する。

## NewsやBlogの詳細ページの前後のデータをDBレコードから取りたい

ニュースページや、Blog機能を作成したときに、
サイト導線として、前後の記事のリンクを作成したときに、
どうしたら良い?って思ったとき、簡単に見つける方法があります。

## DBのテーブル見本
URLでは、ID3の記事を表示しているとします。
|id(主) |status |title |content |public_at |updated_at |created_at |
|—|—|—|—|—|—|—|
|1 |1 |タイトル1 |記事の内容 |2022-01-01 |2021-12-31 10:00:00 |2021-12-31 10:00:00 |
|2 |1 |タイトル2 |記事の内容 |2022-01-10 |2022-01-05 10:00:00 |2022-01-05 10:00:00 |
|3 |1 |タイトル3 |記事の内容 |2022-01-20 |2022-01-10 10:00:00 |2022

元記事を表示

PHP学習まとめ〜FW学習前はこれだけ知ってほしい〜

## まずはじめに

#### PHPでできること・作れるもの:Web開発
PHPはもともとC言語で書かれていたプログラムで、動的なWebサイトを作成するためのツールでした。そのため動きのあるWebサイトの作成が得意な言語です。
CakePHPやLaravelといったフレームワークを使って、大規模なWebアプリケーションを作ることもできます。

#### ・ビルドインサーバーで確認方法

“`
//index.phpの内容が上記質問に記載されているソースコードとする。
$ ls
index.php
“`

“`
# Webサーバーを起動する。
$ php -S localhost:8080
“`

下記URLでアクセス
localhost:8080/ディレクトリ名/index.php

#### ・コメント方法
“`php
// コメント
or
# コメント

/* 複数行コメント
複数行コメント */
“`

#### ・改行
__“\n”__
PHPで変数を出力(echo)した際に、改行コードも記述して見やすくする
改行コードを””(ダブルコーテーション)で囲ってやると

元記事を表示

【Laravel入門】マイグレーションファイルでDB操作を行う

## はじめに

ドメイン駆動設計を学ぶ上で、データベース設計も一度振り返っておこうと思い書いていきます。

備忘録的な記事ですので、読みにくい部分があるかも知れませんが、ご了承の上でお読みください。

また、当方も学習中の身なので間違いなどありましたらご指摘いただけますとありがたいです。LGTMなどもよろしくお願いします。

## マイグレーションとは

そもそも「マイグレーションって何?」と言うところから書いていきましょう。Laravelの公式リリースノートには、以下のように解説されていました。

マイグレーションとは
[>> Laravel公式リリースノートより](https://readouble.com/laravel/8.x/ja/migrations.html)
> マイグレーションはデータベースのバージョン管理のようなもので、チームがアプリケーションのデータベーススキーマを定義および共有できるようにします。ソース管理から変更を取得した後に、ローカルデータベーススキーマにカラムを手動で追加するようにチームメートに指示する必要があったことを

元記事を表示

Laravelページネーションの表記がおかしい時の対処法。

変なエラーはここに載っている。
・CSSが適用されていないなど

https://nebikatsu.com/8350.html/

元記事を表示

AWS EC2 AmazonLinux2 composerをバージョンを指定してインストールする

# 概要

– EC2のAmazonLinux2インスタンスにcomposerを入れて`$ composer`コマンドを実行できるようにする。

# 前提

– 下記の記事どちらかを参考にAmazonLinux2インスタンスにPHP8.0が入っているものとする。
– [AWS EC2 AmazonLinux2 extrasを使ってPHP8をインストールする](https://qiita.com/miriwo/items/9d876de230b66c70bb39)
– [AWS EC2 AmazonLinux2 Laravel用のPHPをインストールする](https://qiita.com/miriwo/items/c335eeec6617ddc0bf2d)

# 方法

1. 下記コマンドを実行してcomposerの2.2.6バージョンを指定してインストールする。

“`
$ php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
$ php comp

元記事を表示

Deep dive into Laravel Pagination – PHP IteratorAggregate

![1_j7QLwyWSomxwVlUT327I-g.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1709868/56528188-7d64-4c14-7260-4e2727e2c289.jpeg)

Regarding to [Laravel pagination doc](https://laravel.com/docs/6.x/pagination#displaying-pagination-results), when calling the paginate method, you will receive an instance of [Illuminate\Pagination\LengthAwarePaginator](https://laravel.com/api/6.x/Illuminate/Pagination/LengthAwarePaginator.html). When calling the simplePaginate method, you will receive

元記事を表示

【PHP】__construct(コンストラクタ)の練習

# コード
“`PHP
name = $name;
$this->weight = $weight;
$this->height = $height;
}

public function introduce(){
$this->introduce_name();
$this->introduce_weight();
$this->introduce_height();
}
private function introduce_name(){
echo ‘僕の名前は’. $this->name. ‘だワン!’.PHP_EOL;
}

元記事を表示

Rails を CakePHP4 に置き換えた時のメモ

## 目的

CakePHP4の勉強がてら、Railsのプロジェクトを置き換える作業を実施した。

## 環境
Ruby On Rails 3.2.11
CakePHP 4.3.5

## 基本文法の比較

#### 識別子

“`ruby:Ruby
local_var # ローカル変数
@instans_var # インスタンス変数
@@class_var # クラス変数
$global_var # グローバル変数
“`
“`php:PHP
class Sample {
// インスタンス変数
static $instans_var;
// クラス変数
$class_var;
public $public_class_var;
private $private_class_var;

function classMethod() {
global $global_var;
echo $global_var
self::$instans_var = ‘instans’;
$this->class_var = ‘class’;
$

元記事を表示

OTHERカテゴリの最新記事