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

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

CPI / ACE01 に入れた Laravel を 5.5 から 6.0 にバージョンアップした話

# サーバーのバージョンを php7.0 から php7.4 に上げよ

対象のサイトは laravel5.5 で作られているもので、自分的Laravel案件の初期の頃のものです。申し訳ないですがもう中身なんて覚えていません。
CPIでは、PHPのバージョンを .htaccess で変更できます。ディレクトリごとに設定することも可能なようです。CPIすごいねえ。。

とりあえずとにかく、まずはテスト環境で PHP7.4に変更してみましたが、動きません!
PHP7.4 では Laravel6.0 以上でないと動かないのです。

というわけで
# Laravel のバージョンを 5.5 から 6.0 に上げよ

大丈夫!
素直に作ってたら問題はあまりありません。

ただし、CPIのACE01(今回は ae***〜 サーバー)では OpenSSL がサポートされていないため、SSHでは行えません。
弊社では最近は Dockerで開発することが多いので、今回もDocker開発環境で行いました。

ここから手順を①〜⑤の5つに分けて書いていきます。

## ① Docker
– ベースイメージ

元記事を表示

【PHP】sessionを完全に理解した(仮)

## sessionを完全に理解した(仮)
これまでsessionを理解せずにRubyやら進めてきたが、
今回理解することに成功した。はず。

sessionを使うと何ができるのか。
またどのような際に使うと役立つのか備忘録として書いていきたい。

## sessionとは?
SESSIONとは、サーバ側で保有する、一時的なデータ保存の仕組みのこと。

ログイン情報など、ユーザーと紐づく情報をサーバー側に一定期間保存しておくことができる。
サーバ側にデータを保存するため、Cookieよりもセキュリティ面で優れている。

SESSIONが使われる例として一番代表的なのはログイン機能。

ユーザIDやパスワード情報をサーバ側にSESSIONとして保存しておくことで、
複数ページにわたるwebサービスでも同じ値を使い回すことができる。

## sessionが必要な理由
HTTPプロトコルでは、通常、情報の保持ができないため
sessionを用いて、一時的に情報を保持する必要があるとされている。

SESSIONとしてデータがサーバに存在していれば、
サーバ上のSESSIONデータから情報を

元記事を表示

reCAPTCHA Enterpriseの導入(PHPが古い人向け)

# 対象者
顧客や上司からgoogle reCAPTCHA を導入したいと言われたが
その顧客のサイトはPHPのバージョンが古くて
「reCAPTCHA Enterprise クライアント ライブラリ」なるものを導入できず
レンタルサーバーでSSHも使えず途方にくれている方。

# 前提条件
・Google Cloud Platform のアカウントを持っている
・プロジェクト作成済み
まぁ検索すればそれぐらいは出来るはず。

# 必要な情報
下記3点のみ Google Cloud Platform より取得してください。

API キー
そのプロジェクトに関連付けられたAPIキー
reCAPTCHA Enterpriseキー
取得方法は検索すれば詳しく説明されたのが出てくる
注意点は「チェックボックスによる本人確認を使用する」にすること。
これを選択しない場合は自動的に危険なアクセスかどうかを判別する方法になってしまうので
「私はロボットではありません」が表示されなくなります

元記事を表示

Laravel 環境にによる分岐処理

# 概要

– Laravelにて.envのAPP_ENVの値いよって処理を分岐させたい時の条件部分を簡単にまとめる

# 紹介

### ローカル開発環境かどうかの判定

“`php
if (app()->isLocal()) {
// ローカル開発環境でのみ実行したい処理
}
“`

### 本番環境かどうかの判定

“`php
if (app()->isProduction()) {
// 本番環境でのみ実行したい処理
}
“`

元記事を表示

【PHP】多次元配列の次元数に上限があるのか気になって試した結果

先日、実務で五次元配列をごにょごにょしているコードに遭遇しました。
普段は三次元配列まででほぼ事足りるので印象に残るコードだったのですが、
ふと、PHPの配列の次元数はどこまでいけるのか気になってしまい調べてみることに。
マニュアルを漁ってもそれっぽい記載を見つけることはできませんでしたが、素敵なブログを発見。

> [PHPの制限一覧](https://blog.ohgaki.net/php-limits)
>
> 配列型の要素数は内部で利用するハッシュのデータ構造定義に依存しています。
> – PHP 7.0未満は2^32個まで (uint32_tが利用されているが、実際には最大数に達する前に問題が発生すると考えられる)
> – PHP 7.0以上の場合、
> – size_tが32bitの場合は、0x04000000個まで
> – size_tが64bitの場合は、0x80000000個まで(通常は2^31個まで利用できる、と考えて良い)

実際は要素数の上限に達する以前にメモリが枯渇しますが上限は存在してそうです。
てことは、次元数についても同様にハッシュのデータ構造定

元記事を表示

【Laravel】美しいへルパ関数の作り方

## この記事に書いてあること
Laravelアプリケーションでヘルパー関数を作成する方法について書いています。

## なぜ書いたか?
自作のへルパ関数を追加したいと思って、やり方を調べたら以下のようにcomposer.jsonファイルにヘルパー関数を追加する方法が多く紹介されていました。

“`json:composer.json
“autoload”: {
“files”: [
“app/helpers.php”
],
}
“`

たしかにこの方法でも追加はできるのですが、へルパ関数を何個も実装したい時にいちいちjsonファイルを追記する可能性が出てきたり、`composer dump-autoload`をする必要が出てきたりと面倒くさいなぁと思いました。

あと単純になんか綺麗じゃないなと。

そこで以下の記事を参考にさせていただき、サービスプロバイダとしてへルパ関数を実装することにしました。

https://levelup.gitconnected.com/create-your-own-helper-function-in-larave

元記事を表示

Laravel artisanでよく使うコマンド

Laravel artisanでよく使うコマンドについて記載。

“`
#controller作成
php artisan make:controller Controller

#Model作成
php artisan make:model User

#Modelの生成先を指定したい場合
php artisan make:model Models`\\`User

#migrationファイルの作成
php artisan make:migration

#migrationを戻す(–stepに指定数分巻き戻される。現在の状況はmigrationテーブルを参照)
php artisan migrate:rollback –step=1

#認証機能を作成したい場合
php artisan make:auth

#artisanコマンド作成
php artisan make:command

#イベントククラス作成
php artisan make:event

#listenerクラス作成
php artisan make:listener

元記事を表示

LINEログインをPHPで実装する

LINE for Businessのアカウントでお客さんとやり取りした後に、フォーム入力をお願いすることになりました。フォームにメアドやLINEのニックネームを入力をお願いするのもリダンダントなので、LINEログインでメアドやニックネームを取得してフォームに自動入力させてみます。

手順は以下の通り(こちらを見ながらやるとよいと思います)
1. LINE developersコンソールでLINEログインのチャネルを作成
1. 同コンソールにてコールバックURL設定
1. コード書く

用意するコードはログイン開始ページlogin.phpと、コールバックページcallback.phpの2つです。

“`login.php
$callback_url = “https://example.com/callback.php”; //LINE developersコンソールに設定したURL
$state=rand();

$ur

元記事を表示

LaravelでEnumを使ってblade上のマジックナンバーを書き換える。(bensampo/laravel-enum)

どうも、たかふみです

個人で開発中のアプリケーションでEnumを使ってみました。
Enumは業務で携わったプロジェクトでも使っていたので、さらに理解を深めるために個人的にも使ってみようと思ったのがきっかけです。

Ben Sampsonさんの`BenSampo/laravel-enum`で実装を行いました。

### 開発環境

“`version.sh
root@ade420a5446f:/work/backend# php artisan –version
Laravel Framework 9.3.1

root@ade420a5446f:/work/backend# php –version
PHP 8.1.1 (cli) (built: Dec 18 2021 00:38:05) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
“`

## Enumとは
列挙型と呼ばれるデータ型の一つ。
複数の定数を一つのクラスとしてまとめることができる。

元記事を表示

【PHP】タグ機能③

下記投稿の続きで、タグ機能に登録機能(DB接続)を実装します。

https://qiita.com/ryouya3948/items/da1a53e32edbd16637a5

https://qiita.com/ryouya3948/items/f8a574bb900ba4fefecb

![tag12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/ea980f92-96fb-9c34-5e62-c219dc200393.gif)

# DBにタグ情報保存

“`html:form.php

//更新

【PHP8.2】false疑似型およびnull型が単独で使えるようになる

PHP8.0において実装された[union型](https://www.php.net/manual/ja/language.types.declarations.php#language.types.declarations.composite.union)の導入過程において、[false疑似型](https://qiita.com/rana_kualu/items/f75e254553157d8eb0b7#false%E7%96%91%E4%BC%BC%E5%9E%8B)および[null型](https://qiita.com/rana_kualu/items/f75e254553157d8eb0b7#null%E8%A8%B1%E5%AE%B9%E5%9E%8B)が導入されました。
これらはunion型の一部としてのみ有効な型であり、単独で使用することはできません。

しかし、これを単独で使えるようにしようというRFCが提出されました。
投票期間は2022/03/12から2022/03/26であり、賛成38反対0の全会一致で可決されました。
従ってPHP8.2から単独型として使用

元記事を表示

【Laravel】APIのcontroller作成時に使える–apiオプション

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## –apiオプション
下記のコマンドで、“`create“`や“`edit“`メソッドを含まないAPIリソースコントローラを素早く生成できる。

“`
php artisan make:controller Api/PostController –api
“`

“`php

元記事を表示

CakePHP4 で悩んだことメモ

## 開発環境

PHP 8.0.16RC1
Apache/2.4.52 (Debian)
CakePHP 4.3.6

## 方針

* URLによってDBを切り替える(マルチテナント的な)
* CakePHPではSQLを発行するのにいくつかの方法があるが、Entityでデータを扱う
* セッションのラッパークラス的なものを作りたい
* フォームバリデーションのメッセージを変更したい

## マルチテナント

マルチテナントというものにはあまり理解はないが、ここでは「URLによってDBを切り替える」を目標とする。

【URL例(ドメイン略)】
① /company1/controller/action ⇒ testdb1に接続する
② /company2/controller/action ⇒ testdb2に接続する

ルートの設定

“`php:config/routes.php
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;

return static function (RouteBui

元記事を表示

【Laravel】model作成時のオプション

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## オプション指定の仕方

model作成の際にオプション指定で、同時に様々なファイルを生成できる。
下記は、migrationファイル・factory・controller(resourceにもとづくメソッドを生やしておいてくれる)を同時に作成してくれる。
“`
php artisan make:model Post -m -c -f –resource
“`

オプションの種類はこちら。
“`
Options:
-a, –all Generate a migration, seeder, factory, policy, and resource controller for the model
-c, –controller Create a new controller for the model
-f, –factory Create a new factory for the model
–force

元記事を表示

【Laravel】Web開発初心者が1週間で入門チュートリアルを実施した記録(9)

以下の続き。

https://qiita.com/yotty19911207/items/19816d1ccde0acf0baa1

前回、認証機能のうち、会員登録、ログイン機能をつくった。
・会員登録機能:済
・ログイン機能:済
・ログインしたユーザーは自分のフォルダのタスクだけを閲覧できる機能

入門Laravelチュートリアル (9) ToDoアプリの認証機能を作る パート2

ここでは、残りの3つ目を実装していく。

・ヘッダーの出し分け

layout.blade.php

元記事を表示

メソッドチェーンとは【個人的なお勉強アウトプット】

## メソッドチェーンとは
メソッドの実行結果に対して、変数などを介入せずに直接他のメソッドを実行すること

## メソッドチェーンのメリット
可読性が上がる。
不必要に変数定数を宣言しなくてよくなる

## 処理内容
直前のメソッドの戻り値に対して処理を行っている。

## 参考サイト
https://travel.rakuten.co.jp/mytrip/ranking/spot-karuizawa

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事