PHP関連のことを調べてみた2023年07月17日

PHP関連のことを調べてみた2023年07月17日
目次

isset, empty, is_nullの違い微妙だから、書いてみる

イマイチわかってないから、とりあえず書き出してみて理解する
何が違うんだ?
間違ってたら、小学生でもわかるように解説お願いします。

# isset()
変数がセットされていて、それがNULLでないことを調べる
値が入っていればtrueになる、入ってなければfalse

変数がセットされていなかったらって表記したい時もあるから
その時は、!isset()ってつけることもあるみたい。
学習している講座でも使ってたんだけど、私の中ではempty()じゃダメなのか?ってなってる。

# empty()

変数が空かどうかを調べる
空( *空文字、* *0、* *NULL、* *FALSE、* *空の配列* )だったらtureそれ以外はfalseになる。

# is_null()
変数がNULLかどうかを調べる。
変数がNULLだったら、trueそれ以外だとfalseになる
変数がセットされていない場合の時もtrueを返すそうだが
セットされてる、されていないはisset()を使った方がいいんだって

## 表にまとめてみた
| 関数 | 未定義 | NULL | 0 | ””(空文字)

元記事を表示

模写「How To Make Login&Register Form With User &Admin Page Using -CSS -PHP -MySQL Database」

模写参照サイト

順番
1.admin page
(1)html(admin_page.php)
(2)css(style.css)
2.user page
(1)html(user_page.php)
(2)css(style.css)
3.register form
(1)html(register_form.php)
(2)css(style.css)
4.login page
(1)html(login_form.php)
(2)css(style.css)
5.register form(DB接続)「POSTメソッド」
6.login form(DB接続)「POST,SESSION」
7.admin page「SESSION」
8.user page「SESSION」
9.logout「SESSION」


1.admin page (html&css) [2023年6月29日

元記事を表示

infinityfreeでdeploy方法(PHP非商用)

手順(極簡):

1.infinityfreeに登録する。
2.(creat account)アカウントを作成する:自分の好きな名前を使用して構いません。
3.Database Nameを記入
4.MYSQL Databasesを開く。
5.creat Databaseをクッリク(データベースを作成する)。
6.作成したデータベースを開く。
7.自分のデータベースをアップロードする。
8.ホームページの情報に基づいて、自分のPHPファイルを開き、以下の内容を変更する。
①USERNAMEユーザー名
②PASSWORDパスワード
③HOSTNAMEホスト名
④DATABASE NAMEデータベース名
8.(file manager)ファイルマネージャを開く。
9.自分のファイルをアップロードする。
10.ラベル(LABEL)の場所のリンクをコピーし、自分のログイン画面を開く。ログイン画面のリンクもコピーする。
11.今後は直接ログイン画面のリンクを提供しても構いません。

元記事を表示

DockerでのLaravel環境構築時のCould not deleteエラー解決法

# はじめに

こんにちは。今回はDockerを使用してLaravelの開発環境を構築する際に遭遇したエラーとその解決策についてお話します。
`create-project`を実行した後に発生する`[RuntimeException] Could not delete ディレクトリ`というものです。
このエラーが発生して、Laravelのインストールが正常に完了せずドツボにはまっていました。

# 結論

`composer config –global process-timeout (任意の秒数)`を実行してタイムアウト時間を延ばす。

# 記事の対象者

Laravelのインストール中に`could not delete`エラーに直面して困っている方。

# コンテナの中身

phpコンテナとnginxコンテナのみのシンプルな構成です。

# エラー解消の詳細

まず、`Could not delete`エラーの原因を調査しました。その結果、以下の3つの可能性が挙がりました。

1. メモリーの問題
2. ネットワークの問題
3. パーミッションの問題

しかし、Docker内

元記事を表示

【PHP】特定のクラスであるかを型演算子で判定して条件分岐させる

変数に入っているインスタンスがどのクラスから作ったものかで、処理を分岐させたいことがあるかと思います。

その場合、型演算子 **instanceof** を使うと良いです。

instanceofは、対象のインスタンスがどのクラスかをbooleanで判定してくれる演算子です。
具体的な使い方としては、以下です。
対象のクラス名と比較して、同じクラスからできたインスタンスの場合、trueを返します。
“`php
// $objectはインスタンスが入っている変数
// TargetClassはクラス名
$object instanceof TargetClass
“`

では、具体的に本記事のタイトルでもある、条件分岐させる例を以下に示します。
例えば、アカウントがユーザー(User)と管理者(Admin)の2種類があるとします。
その2つのクラスから作ったインスタンスがあった場合、
どちらかによって処理を分岐させたい場合は以下のようにします。

“`php
Class User
{
}

Class Admin
{
}

$account = new User();

if (

元記事を表示

【Laravel】PHPバージョンアップ後にphp.iniを確認する

# 詰まったこと
AzureにLaravelをデプロイする準備をしている中、ローカル開発環境のLaravelは7.2.1を使っているのにAzureのAppServiceの設定をPHP8.0.1にしてしまったので、ローカルもPHP8.0.1にあげた。

conposer.jsonと環境変数を変えて、いざcomposer updateを実行して出たエラーに時間を取られたので最終的な解決方法メモ

“`
composer update

[Composer\Exception\NoSslException]
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension,

元記事を表示

ITエンジニアなのにまだ投資やってないの?ChatGPTでクオンツシステム作って儲けようぜpart2

## 前回まで
ITエンジニアなのにまだ投資やってないの?ITエンジニアならChatGPTでクオンツシステム作って儲けようぜ(https://qiita.com/kazukichi/items/fa6433c3d0115c2b627b)

## システムなんかで勝てるの?w
日本の投資家には批判的な意見もまだまだある(詐欺的なものも多いですから)みたいですが、エンジニアの皆さんなら分かるでしょう。

出来る

ですよね。
そもそも、勝ってる投資家はいくつかの情報を判断して買いや売りのタイミングを測っていて、それは全て定量化した情報を元に判断してるわけですから。

システムで勝てない!って言ってる人は結局その戦略が悪いだけでシステムが悪い分けじゃないわけです。

因みにITを駆使して、ブランド苺を生産している

**ミガキイチゴ**

というのがあるんですが、熟練職人の「感覚」で判断しているものを職人の視線を全てトラッキングして、

**どういう時に何処を見て判断しているのか**

を数値化して、成功しています。
要は、職人さんが言う「感覚でやってる」というのは実際感覚ではなく、言語化す

元記事を表示

Apache+PHPサーバーのWebサイトをAWS Lambdaで動かす

別チームでホスティングしていたWebサイトがあったのですが、いろいろと都合がありWebサイトのソースとドメインだけをもらい、自分のとこのチームでホスティングする機会があり、「いまさらサーバーとか持ちたくない! サーバーレスでやりたい! それにIaCしたい!」と四苦八苦したメモです。

## 受領したソース

受領したWebサイトですが、販売終了したけれど残しておかないといけない商品サイトとかをイメージしていただけるといいかと思います。アクセス頻度・更新頻度ともに多くはありません。

ファイル種別としては、以下のようなものが含まれます。古き良きCGI的な感じの動的サイトです。

– HTMLファイル
– PHPファイル、incファイル
– アセットファイル
– jsファイル
– スタイルシート
– 画像
– etc…

容量的には全体で400MBくらいですが、そのほとんどはアセットファイルで、HTML,PHPは数MBです。PHPはヘッダーフッターを共通化したり、ニュースやブログ記事のXMLをCMSサーバーから取得・整形したりする用途で使われています。C

元記事を表示

新: Laravel SQLの実行クエリログを出力する

## 概要

今回アップデートしたLaravel [10.15.0](Laravelhttps://github.com/laravel/framework/releases/tag/v10.15.0) でSQL実行ログの出力処理が改善されました。

以前にも同様の記事を書いていましたが、こちらはこちらでしばらく使われるかなと思うので、古い記事は残しつづ新しく記事を書きました。

https://qiita.com/ucan-lab/items/753cb9d3e4ceeb245341

Laravelのアップデート内容についてはこちらに詳しく解説された記事がありますのでご紹介します。

https://qiita.com/fuwasegu/items/c6e668dae1546184ff15

## 環境

– PHP: 8.2.8
– Laravel: 10.15.0 以上
– MySQL: 8.0.32

## SQL実行ログを出力する

### サービスプロバイダーの作成

“`shell-session
$ php artisan make:provider Databas

元記事を表示

フットサルコート予約webアプリを真似して作ってみる

## 説明
PHP,Javascriptの復習のために何か作ろうと思ったのでやってみます。
phpはなんとなく覚えているんですが、JavaScriptは苦手意識があって何も覚えてないのでほぼ0からです。

## 使用言語等
##### フロントエンド
・HTML, CSS, Javascript

##### バックエンド
・phpのLaravelを使ってみる

##### データベース
・MySQL

## その他

やってるうちに必要だったり、面白そうだなって思ったらjavascriptのフレームワークを使ってみる。

元記事を表示

Laravel で使いたい便利なパッケージ4選 (Pint, Larastan, Telescope, Insights)

# はじめに
**Laravel での開発効率・品質向上に繋がる便利なパッケージ**のまとめ記事です。

| パッケージ名 | 用途 | 対応バージョン |
| —- | —- | —- |
| Laravel Pint | コード整形 | PHP 8.1 以上 |
| Larastan | 静的コード解析 | PHP 8.0 以上 かつ Laravel 9.x 以上 |
| Laravel Telescope | デバッグ | PHP 8.0 以上 かつ Laravel 8.37 以上|
| PHP Insights | コード品質分析 | PHP 7.4 以上 |

# Laravel Pint

## 概要
PHP-CS-Fixer をベースとして作成された Laravel 用のコード整形ツール

https://laravel.com/docs/10.x/pint

## 対応バージョン
PHP 8.1 以上

## インストール手順
Laravel 9.x 以上のアプリケーションであれば基本的には不要です。
もしインストールされていなければ、以下のコマンドを実行

元記事を表示

[Laravel 10.15] 生SQLを実行する必要がある方注目!toRawSql()でEloquentからバインド値が組み込まれたSQL文を出力できるようになった!

## はじめに

Laravelが提供しているEloquentというORMは非常に便利で、複雑なクエリも簡単に作成できます。便利なのですが、残念ながらEloquentが使えない場合もあります。

たとえば、クエリのコストや負荷を計測するための`explain`を実行したい場合です。
もう一つは、弊社では安全のために`本番のtinkerでコマンドを実行しないルール`があり、データ抽出の依頼があった場合にはDBのレプリカで生のSQLを実行することになっています。

そのような場合、Eloquentから生のSQLに変換するために`dd()`や`toSql()`といった関数もありましたが、出力されるSQLにクエリパラメータがバインドされず、`?`というプレースホルダのままになってしまいました。そのため、手動でクエリパラメータをSQL文に置き換える必要がありました。

Laravel 10.15のリリースでは、`toRawSql()`関数が追加され、バインドされた値が含まれたSQL文を出力できるようになりました。

## toSql()・dd()・toRawSql()比較

### 今まであった

元記事を表示

PHP/Laravelで使える!?OpenAI APIクライアント

## 背景
もう随分前から生成AI/LLM/ChatGPTあたりの話題が尽きない今日このごろ。
弊社運営のSaaSにもGPTが導入されたりして、結果、お問い合わせが増加していると聞いています。
先日、ふとLaravel Newsのブログ記事などを眺めて居たのですが、やはりというべきか、最近になってGPT関連の記事が複数掲載されていました。PHP/Laravel界隈も例に漏れず、という所のようです。
私も、今更ながらキャッチアップをばと、PHPerの端くれとして、
PHP/LaravelからOpenAI APIを利用する実装を試してみました。

## 事前準備

* Laravel sailで開発環境を構築
* `curl -s “https://laravel.build/example-app” | bash`
* OpenAI APIを利用するため、OpenAIへのSignUpと、APIキーの払出
* https://openai.com/ にアクセスしてSign Up
* https://platform.openai.com/account/billin

元記事を表示

4ステップでLaravelで作ったウェブサイトをさくらサーバーで公開する

## 前提条件
* /home/\/wwwディレクトリが公開ディレクトリとする
* つまり、https://\.sakura.ne.jp/を叩くと/home/\/www以下にアクセスできる
* /home/\/\にLaravelのプロジェクトディレクトリをおく
* https://\.sakura.ne.jp/\/を叩くとプロジェクトのサイトにアクセスできるようにする

## 方法
* さくらサーバーにアクセスする
“`
$ ssh @.sakura.ne.jp
“`

* Composerをインストールする
“`
$ curl -sS https://getcomposer.org/installer | php
“`

* Laravelのプロジェクトを立ち上げる
“`
php composer.phar create-project laravel/laravel
“`

* Laravelのpublicディ

元記事を表示

CSVファイルのMIMEタイプはPHPバージョンで変わるようだ

Webシステムでファイルアップロードをする前に
ファイルの種類をチェックする処理を実装しようとしました。

備忘録として検証結果を投稿します。
 ※サーバ側の構築手順は省略しています

# 検証環境
– サーバ
– Rocky Linux 8
– Apache 2.4.37
– クライアント
– Windows 10
– Google Chrome

# 検証方法
– 検証用ソース(index.php)をサーバ側(/var/www/html/)に格納する
– PHPをインストールする
– クライアント側からhttp://[IPアドレス]/にアクセスする
– 検証したいファイルを選択し、「アップロード」ボタンをクリックする
– 画面に表示されるMIMEタイプを確認する

![画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432162/4eeaa694-2ba7-8a72-de2f-98bff58860a8.png)

# 検証用ソース
“`index.php

元記事を表示

Laravel10で[Class “Database\Factories\UserFactory” not found]が起こってSeederが実行できない

既存のLaravel6のアプリをLaravel10にアップグレードした後、以下のコマンドを実行すると、
“`
php artisan db:seed
“`
[Class “Database\Factories\UserFactory” not found]というエラーを吐かれてしまった。ここからGoogle検索でさまざまな記事や以下のドキュメントを参考にしてなんとか頑張っていたが、長時間解決できず。(ModelにHasFactory追加したりとか。)
https://readouble.com/laravel/10.x/ja/seeding.html

解決策としては、composer.jsonに以下の記述を追加すれば良いだけだった。
[変更前]
“`
“autoload”: {
“psr-4”: {
“App\\”: “app/”
},

“`
[変更後]
“`
“autoload”: {
“psr-4”: {
“App\\”: “app/”,
“D

元記事を表示

【Laravel】リソースコントローラーについて

## はじめに

アプリケーションを作成していく中で必要な考え方として

CRUD「クラッド」という考え方があります。以下の頭文字を取ってCRUDと呼ばれています。

| C | create | 新規作成 |
| — | — | — |
| R | read | 表示 |
| U | update | 更新 |
| D | delete | 削除 |

リソースコントローラーは、CRUDを細かく以下のように7つに分けてURIやルート名などを自動で生成してくれるという機能になります。

| 動詞 | URI | メソッド名 | ルート名 | 名称 |
| — | — | — | — | — |
| GET | /photos | index | photos.index | 一覧の表示 |
| GET | /photos/create | create | photos.create | 新規作成 |
| POST | /photos | store | photos.store | 保存 |
| GET | /photos/{photo} | show

元記事を表示

【PHP8.3】Overrideが明示できるようになる

PHPドキュメントでよく使われる[phpDocumentor](https://docs.phpdoc.org/)、およびドキュメントの推奨フォーマットである[PSR-5](https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md)・[PSR-19](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md)には、何れも何故か[`@Override`がありません](https://qiita.com/rana_kualu/items/8b2d9d42b81e9f6f0fd1)。
なんでや。

ということでPHP本体にアトリビュート`#[\Override]`を追加するRFCが提案されました。
既に受理されており、PHP8.3から使えるようになります。

以下は該当のRFC、[Marking overridden methods](https://wiki.php.net/rfc/marking_

元記事を表示

PHPの基礎(仮)

# 実行環境
とりあえず最新のバージョンで始めました。
– MAMP 5.0.5
– PHP 8.0.1
– MySQL 5.7.24
– Google Chrome
# PHPの基本
### PHPのルール
PHPでは下のコードのように処理を囲みます。例では、「echo」を使用して、Hello Worldを出力しました。
~~~php:index.php

~~~
出力結果です。実際にはChromeに表示されています。
~~~:出力
Hello World
~~~
処理が1行の場合は、セミコロンを省略しても動作します。
~~~php:index.php

~~~
~~~:出力
Hello World
~~~
### 変数の定義方法
変数の名前の前に$をつけて定義します。型の指定は必要ないです。出力の際に「” “」は変数を展開しますが、「’ ‘」は文字列として出力します。brタグを使用して改行しています。
~~~php:index.php

元記事を表示

ファサードとは

# Laravel Facade(ファサード)とは

## ファサード作成

### 1 ファサードに登録したい処理(クラス)を作成
ディレクトリーはどこに作成するといったルールもなく、特に指定なし。

“`

元記事を表示

OTHERカテゴリの最新記事