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

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

WordPressで検証用関数を用意する

## はじめに
Web制作会社のエムハンドでエンジニアをしてる@yadon_yadon_yadon_don_donです:v:
エムハンドのWordPressサイトの制作ですが、
WordPressテンプレートテーマをカスタマイズして、独自テーマを作成。
それをクライアントに納品しています。

その際、いろいろと問題になるのがエラーが出た際の検証です。
おそらくよく使うのが、`error_log()`や`print_r()`、`var_dump()`あたりでしょうか?
`error_log()`はログを確認しに行くのが面倒、`print_r()`、`var_dump()`はすぐに確認できるが、検証後消し忘れてしまうかもしれないと何か面倒です。

そこで、**ステージング環境でのみブラウザの検証ツールで確認できる検証用関数**を作成しました。
ソースコピペで(多分)大丈夫です:writing_hand:
WordPressテーマ開発向けになるのでしょうか:thinking:

## 使用方法
### 関数の要件
やろうとしていることは、下記です。
1. phpのコードをjavascript

元記事を表示

独自ヘルパ関数追加で階層のあるsessionを作ってみた。

# これは何?

Laravelは独自ヘルパ関数を作れます。

https://readouble.com/laravel/7.x/ja/helpers.html

今回は、独自ヘルパ関数で、sessionをラップした形のものを作り、
階層つきsessionを作成しました。

# どういうとき使うの?
id付きのページ
“`/hoge/{id}“`
にアクセスし、これを起点にsessionを保ちながらアクセスせざるを得ない場合使います。

例えば、
“`
/hoge/10

/fuga

/piyo
“`
の遷移

“`
/hoge/20

/fuga

/piyo
“`
の遷移

があるとします。

もし、sessionの値をそれぞれ、
“`/fuga“`や“`/piyo“`
と何かしら使うとしたらどうでしょうか?

今回は下記のようなケースを想定しました。
“`
/hoge/10

/fuga

ここで別タブで
/hoge/20

/fuga

ここで元のタブに戻り
/fuga

/piyo
“`
ここのpiyoのsessionの値は10関

元記事を表示

PHPからDBにデータを挿入する方法

・PHPからDBにデータを挿入する方法
~はじめに~
`insert into`でデータを挿入することが可能だが、いたずらされる可能性がある。
そのため、以下の方法でデータを挿入する方が良い。

~推奨方法~
`prepare`、`bind_param`、`execute`を使う。
例)挿入するデータ(カラムの種類)が1つの時
“`
prepare(“insert into data(memo) values(?)”);
if (!$statement) {
die($db->error);
}
$statement->bind_param(“s”, $input);
$return = $statement->execute();
if ($return) {
echo “データを挿入しました”;
} else {
echo $db->error;
}
?>
`

元記事を表示

三項演算子

## 使用用途
– if文に似たようなもので、条件式がTRUEの場合に真の式を返し、FALSEの時は偽の式を返す。
– if文よりもコンパクトに見える。

:::note warn
注意
if文とは異なり、演算子なので結果として式を返す。 
if文のように条件に応じた処理を記述するものではない。
多用すると可読性が低下する。
:::

## 使い方
“` php:三項演算子
条件式 ? 真の式 : 偽の式
“`

“` php:例
$value2 ? “value1はvalue2より大きい” : “value1はvalue2より小さい”;
?>
“`

?の前が条件。
その次がTRUEの際の式。
その次がFALSEの際の式。

例文の場合、条件式がTRUEであれば、「value1はvalue2より大きい」が返る。条件式がFALSEであれば、「value1はvalue2より小さい」が返る。

### この式をif文で書いた場合
“` php:if文で書いた場合
$value2) {
echo “val

元記事を表示

【Laravel】マルチログインで認証ミドルウェアのリダイレクト先をGuard(認証)別で指定する

# 環境
– PHP 8.0.3
– Laravel 8.79.0
# 今回実現したい事
– ルーティングで`middleware auth:〇〇`を使ってログインしていないユーザはGuard(認証)別のログインページにリダイレクトしたい
– `redirectTo`をオーバーライドしただけではGurardが分からないためGuard別のリダイレクトが出来ない
# 結論
Authenticateクラスの`unauthenticated`をオーバーライドして`redirectTo`メソッドの第二引数に$guardsを追加して使う。下記のようにすることで`redirectTo`でguardが分かるようになる。

“`php:Authenticate.php
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Auth\AuthenticationException;

class Authenticate extends Middleware
{
protected function u

元記事を表示

配列に新たな要素を追加する方法(PHP)

# 配列に新たな要素を追加する方法(PHP)

この記事ではPHPで配列を使う際、

* 配列の先頭に要素を追加する方法
* 配列の最後に要素を追加する方法
* 配列の適当な位置に要素を追加する方法

の参考になればと思います。

## 配列の先頭に要素を追加する方法
こちらが配列の先頭に要素を追加する方法です。
* array_unshift()
### array_unshift()
array_unshift関数はphpのビルトイン関数で、
array_unshift(配列名, 追加したい要素)
で、配列の先頭に要素を追加することができます。

“`php:sample.php
$samples = [2, 3, 4];
array_unshift($samples, 1);
print_r($samples);

//出力結果
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)

“`

複数の要素を追加したい場合は、
array_unshift(配列名, 追加したい要素1, 追加したい要素2, 追加し

元記事を表示

RubyとPHPの比較(クラス、インスタンス、継承、オーバーライド)

# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。

これらの記事の続きです。

https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a
https://qiita.com/Hashimoto-Noriaki/items/96eadd7076675fe19dc9

# クラス

⚫︎“`Ruby“`

“`rb
class Dog
def initialize(name,kind,weight)
@name = name
@kind = kind
@weight = weight
end

def feed(eat)
@weight += 1
puts “重さ:#{@weight}kg

元記事を表示

PHPでSQLのSELECTを使用する方法

・PHPでSQLのSELECTを使用する方法
①query構文でSELECT
②whileとfetch_assocで各レコード毎に操作

画像の通り、dataというテーブルがあったとする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2596732/22affa92-5b32-1c40-0468-d7013742cbee.png)

例)
“`
query(“select * from data”);
if ($records) {
while ($record = $records->fetch_assoc()) {
echo $record[‘name’] . “
“;
}
} else {
echo $db->error;
}
?>

“`

補足画像)
![image

元記事を表示

query構文を用いてPHPでSQL操作(テーブル作成と削除、SQLエラーの表示)

・query構文を用いてPHPでSQL操作(テーブル作成と削除、SQLエラーの表示)
●query構文
`DB接続インスタンス->query(“SQL操作”);`
※SQL操作・・・create, drop, delete, insert, update等
●テーブル作成
`DB接続インスタンス->query(“create table テーブル名(カラム名 カラム型, …)”);`
●テーブル削除
`DB接続インスタンス->query(“drop table if exists テーブル名”);`
●SQLのエラーの表示
`echo DB接続インスタンス->error;`

例)
“`
query(“drop table if exists test”);
$success = $db->query(“create table test(id INT)”);
if ($success) {
echo “テーブルを削除後、作成しまし

元記事を表示

MAMPにおけるMySQLiを用いたDB接続(PHP)

・MAMPにおけるDB接続
●使うコード
`$mysqli = new mysqli(“ホスト名”, “ユーザー名”, “パスワード”, “データベース名”);`
※データベース名は自分で作成したDB名を書く
※PHP公式ドキュメントは以下のページ
https://www.php.net/manual/ja/mysqli.quickstart.connections.php

●MAMP情報(ホスト名、ユーザー名、パスワードの取得)
手順1
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2596732/36522334-1f58-ed32-8e30-677e53653e5c.jpeg)

手順2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2596732/59549367-e189-855e-b02a-859f9d8e7ece.png)

例)
“`

元記事を表示

PHP 変数展開 文の中に変数を入れ込む

## 使用用途
– PHPで文の中に変数の値を出力したい際に使う

## 変数展開

“` php:変数展開のコード

元記事を表示

PHPの配列のkeyをスネーク⇔キャメル変換する関数を作ってみた

# コピペ用関数

“`functions.php

//キャメル→スネーク変換
function convertStringIntoSnakeCase(string $string): string
{
return ltrim(strtolower(preg_replace(‘/[A-Z]/’, ‘_\0’, $string)), ‘_’);
}

//配列のkeyを全てキャメル→スネーク変換
function convertArrayKeyNamesIntoSnakeCase($array): array
{
$snakelized_array = [];
foreach ($array as $key => $value) {
if (
is_array($value) === true ||
is_object($value) === true
) {
if (is_numeric($value) === true) {

元記事を表示

PHP + MySQLフルスクラッチでユーザー認証機能を実装する【マイページ・パスワード変更機能編】

PHP + MySQLフルスクラッチでのユーザー認証機能の実装方法を解説します。今回は【マイページ・パスワード変更機能編】です。
開発環境、ファイル構成、ER図はこちらからご確認ください。

https://qiita.com/Michi1090/items/67db6a38bb63752237e7

# 要件定義

### マイページ
– ログイン中のユーザー名を表示
– インデックスページ、パスワード変更画面、ユーザー登録削除画面へのリンクを設置

### パスワード変更画面
– ユーザーからは、現在のパスワード、新しいパスワード、新しいパスワード(確認用)の3つを入力させる
– パスワードは半角英数字8文字以上で英大文字、英子文字、数字を最低1個以上含む
– パスワード変更完了後、マイページへリダイレクト

# マイページ (my_page.php)
“`my_page.php

OTHERカテゴリの最新記事