PHP関連のことを調べてみた

PHP関連のことを調べてみた

Undefined type ‘App\Controller\Request’というエラーの対処法

# 問題のコード
“`php
get(‘name’);
$pass = $request->get(‘pass’);
$result = ‘

元記事を表示

composerで作成したプロジェクトのサーバー起動時エラーが出る

# はじめに
“`
php bin/console server:run
“`
上記のコマンド実行時にエラーが出たので解決方法をここに綴ります。

# 試したこと
#### website-skeletonプロジェクトの作成
“`
composer create-project symfony/website-skeleton プロジェクト名
“`
#### プロジェクトのフォルダ内に移動
“`
cd プロジェクト名
“`
#### サーバーの起動
“`
php bin/console server:run
“`
上記のコマンドでエラが発生

:::note alert
Command “server:run” is not defined.

Did you mean one of these?
dbal:run-sql
server:dump

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~ViewHelper編~

# 初めに
Flowでは、Fluidというテンプレートエンジンが採用されており、ViewHelperと呼ばれる機能が使えます。今回は、このViewHelperについて解説していきます。

# ViewHelperとは
[こちら](https://qiita.com/nnhkrnk/items/06631a2ac57c6465696b#%E3%82%BF%E3%82%B0%E3%81%AE%E5%AE%9F%E6%85%8B)の記事で、ViewHelperを定義することでHTML内で使える独自のタグを作成することができると紹介しました。今回は、独自のViewHelperを作成してみようと思います。

## 使い方

作り方は簡単です。
以下のような形で書きます。

“`php

元記事を表示

macOSでphpコマンドを使用できるようにする

# 前提
homebrewをインストールしてあること

# 現状
“`
$ php -v
zsh: command not found: php
“`
command not found: phpと出ます。

# やり方
下記コマンドを実行し、homebrewを最新化
“`
brew upgrade
“`
下記コマンドを実行し、PHPを手動でインストールする。
“`
brew install php
“`

下記コマンドを実行し、PHPのversionとコマンドを使用できることを確認
“`
php -v

PHP 8.3.7 (cli) (built: May 7 2024 16:35:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
“`

PHPはほとんどのmacOSシステムにプリインストールされているため

元記事を表示

Laravelのキャッシュについて

## キャッシュとは
動作を高速化するため利用されます。

## キャッシュの作り方
例えば、`config`ディレクトリにある設定ファイルのキャッシュを作成する場合
“`bash
php artisan config:cache
“`

を実行することで作成されます。
他にもルートのキャッシュやviewのキャッシュなど、様々な種類があります。

## 何が起きているのか
上記のコマンドでキャッシュ作成コマンドが実行されると
`/bootstrap/cache/config.php`
というファイルが作成されます。これこそがキャッシュの正体です。

このファイルの中身は、主に`config`ディレクトリ内のファイルの中身が**全て纏められたもの**であり、このファイルが作られると今後はこの設定を参照するようになります。

“`
.
├── app
├── bootstrap/
│ ├── cache/
│ ├── config.php ←キャッシュファイル
│ ├── …
├── config/ ←このディレクトリの中身全てが纏められる

元記事を表示

PHPのhtmlspecialchars

# htmlspecialcharsとは?

【PHP】サニタイジングとは?htmlspecialcharsの使い方

「HTMLコードをそのままブラウザに表示しようとすると、HTMLコードとして認識されますが、特殊な文字を別の文字列に変換することで、ブラウザにHTMLコードとしてではなく、ただの文字列として表示されるようになります。」

と記載しているので試してみる。
**「index.html」送信フォームのファイル**
“`html





Document

ユーザー登録フォーム

名前:

元記事を表示

オブジェクトの操作

## はじめに

PHPのオブジェクトの操作についてまとめる。

### オブジェクトの代入

オブジェクト変数の代入は参照渡しが規定。

“`php:Person.php
class Person
{
public $firstName;
public $lastName;

public function __construct($firstName, $lastName)
{
$this->firstName = $firstName;
$this->lastName = $lastName;
}

public function show()
{
print “

私の名前は{$this->lastName}{$this->firstName}です。

“;
}
}
“`

“`clone.php
require_once ‘Person.php’;

$p1 = new Person(‘リオ’, ‘山田’);
$p2 = $p1;
$p2->firstN

元記事を表示

Webアプリ開発 記事の詳細とコメント編

# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回は記事の詳細とコメント機能についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## 記事の詳細
### 実装事例
ホーム画面から

![layout.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/884220d0-500b-7525-0c0c-652b7afef065.png)

記事のタイトルまたは「この記事を読む」を押してもらうと記事の詳細を確認できます。
今回の例では「スープ

元記事を表示

Webアプリ開発 記事の更新、削除編

# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回は作成した記事の更新、削除機能についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## 記事の更新
### 実装事例
ダッシュボード画面から「記事を編集する」を押してもらうと

![dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/5468d24c-19c3-d869-301b-7e516c675e91.png)

記事の編集画面が出てくるのでここで記事を編集

元記事を表示

Webアプリ開発 記事の新規登録編

# 初めに
webアプリ開発ができたので、どんな感じで作成したのかをまとめたいと思います。
今回はマイページ編集についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## 記事の新規登録
### 実装事例

![author.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/190d04f5-d074-edb8-4c85-804d36f90518.png)

権限があるユーザーには投稿一覧ボタンが出てきます。
押すと

![dashboard.png](h

元記事を表示

【PHP】if文を簡潔に書くために守るべきルール

:::note warn
エンジニア初心者の投稿であるため、間違っている箇所が多くあるかと思います。
間違っているなどあればご教授いただけると幸いです。
:::

## はじめに
PHPの学習中、if文の条件式の書き方を全く意識せず書いていたため、非常に美しくない条件式を量産してしまっていました。戒めの意味も込めて記事に残したいと思います。

## if文とは(PHP)
PHPの公式サイトにはこのように書いてありました。
> この構文は、命令の条件実行を可能にします。 PHP では、C 言語に似た次のような if 構文が使用されます。
>if (式)

>式は論理値で評価されます。 式が true と評価された場合、 PHP は文を実行し>ます。false と評価された場合は、これを無視します。

条件の書き方次第では何通りもの書き方ができます。今回はそのことについてメンターの方に指導してもらったことを含めつつ、自分なりに考えたことをここに残したいと思います。

## if文 条件式の書き方

### 否定系・肯定系どちらも使える場合は肯定系を使う
条件式が!==と===のどちら

元記事を表示

【PHP】PHPにおける不変クラス

# 不変クラスとは

不変クラスとは、オブジェクトを作成した後に状態が一切変化しないクラスのことです。
クラスを不変にすることで、意図せずオブジェクトの状態が変更されてしまうことを防ぎます。
クラス設計においては、可能な限り不変クラスとすることが保守性の高いプログラムを組む上での近道となります。

# PHPにおける不変クラス

PHPでは近年、より堅牢なコードを記述できるようバージョンアップが重ねられており、不変クラスの設計も行いやすくなりました。
以下はBlog(ブログ)クラスを不変クラスとして記載したサンプルコードです。
なお、PHPのバージョンは現時点で最新の8.3を使用しています。

“` php
titl

元記事を表示

PHPの多次元配列から特定のキーの値を取り出す

普通のPHPerなら知ってて当然かもしれないので自分用の覚え書き。
ユーザー情報等のデータベースを扱うことがよくあって、`FETCH_ASSOC|FETCH_UNIQUE`なんかでデータを取り出すと
“`php
print_r($alldata);
/*
Array
(
[1] => Array
(
[id] => 1
[account] => suzuki
[sei] => 鈴木
[mei] => 一郎
[seikana] => すずき
[meikana] => いちろう
)
[3] => Array
(
[id] = 3
[account] => tanaka
[sei] => 田中
[mei] => 次郎
[seikana] => たなか

元記事を表示

Webアプリ開発 マイページ編集編

# 初めに
webアプリの開発ができたので、どんな感じで作成したのかをまとめたいと思います。
今回はマイページ編集についてです。
# 開発環境

macOS Sonoma 14.4.1
PHP 8.3.3
Laravel Installer 5.2.0
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## マイページ編集
### ビュー
マイページに移動する前に
![commonUserDropdown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/6de98a1d-9740-d8c8-afab-52b31ffa2138.png)
自分の名前を押すとドロップダウンのメニューが出てくるようにして、「プロフィール」を押すとマイページ画面に飛べるようにしました。
マイページはLarave Breezeを参考にしました。

![updateProfile.png](https://

元記事を表示

トレイト

## はじめに

トレイトについてまとめる

### トレイトとは

いくつかのメソッド群を独立したクラスで再利用できるようにした仕組みのこと。
PHPの継承では単一継承しかできないが、トレイトを使えば多重継承のようなことが可能。

### 参考コード

“`php:trait_multi.php
interface IFax {
function send();
}

interface IPrinter {
function print();
}

trait FaxTrait {
public function send() : void {
print ‘sening Fax…sended!’;
}
}

trait PrinterTrait {
public function print() : void {
print ‘printing…completed!’;
}
}

class FaxPrinter implements IFax, IPrinter {
use Fax

元記事を表示

共有フォルダ上のCSVをサイトにtableタグで自動挿入させてみた

某事業会社さんでは、Excelで更新した表をHTMLの`

`タグに埋め込んでコーポレートサイトにアップロードする、という日次のルーティン業務がありました。

これを半自動化したので記事にします。

# 基本方針
長らく情シスで行っていた業務ですが、事務職で雇用しているパートさんに業務を移管したい。(というか自分はやりたくない)
かと言って、うっかりファイルを壊されたりすると情シスの仕事が増えてしまうので、サーバに専用のディレクトリを作成し、当該ディレクトリのみアクセス可能なFTPアカウントを作成、それをパートさんに渡します。
SFTP/SCPではありません。暗号化されていない従来のFTPです。
このご時世にFTPを使う理由は、Windowsの**ネットワークプレイス機能**でFTPサーバに接続するため。
エクスプローラでは普通の共有フォルダに見えるので難しいと感じさせず、運用をすんなりと受け入れてもらえます。
セキュリティ的にどうなのよ、という意見はあるのですが、そもそも公開データなので、暗号化する意味がありませんし、仮にパスワードが漏れても閉じたディレクトリにしかアクセス

PHP

# 大学で役立つアプリを作ろう(お茶会第1弾)
今回はとてもシンプルにwebアプリを作成しました。
xamppで気象庁のAPIから東京の天気を出力し、データベースを使用し掲示板的な用途を追加しました。

# 設定情報
データベース名はbbs-yt,テーブル名はgdsc-table,要素はcomment(Text型)とpostData(Data型)の2変数。
ユーザ名はrootでパスワードは無しで設定。

# デモ動画

無名クラス

## はじめに

無名クラスについてまとめる

### 無名クラス

その名の通り、名前を持たないクラス。
定義したクラスを後から利用しないことがわかっているクラスを定義するのに利用する。

#### メリット

・コードをシンプルに表現でき、見た目にも関連性を把握しやすい。
・式が許されている場所であれば、どこにでも記述できる。
・名前がないので、そもそも名前が競合する恐れがない。

#### 参考コード

`execute`メソッドでは、あらかじめ決められた前後の処理を挟んで、与えられた任意の処理を実行できるものとする。

“`php:class_anonymous.php
interface Runnable {
function run();
}

class MyClass {
public function execute(Runnable $rc) : void {
// ダミー処理(本来はなんらかの前処理を実装)
print ‘start…’;
// 利用者から指定された処理を実行
$

Laravelのメールをキュー投入してバックグラウンドで処理する

# はじめに
[前回の記事](ttps://qiita.com/fakefurcoronet/items/17323a2e11d3eb11c445)で2段階認証を実装したわけですが、[公式ドキュメント](https://readouble.com/laravel/9.x/ja/mail.html)にこんな記述がありました。

> 電子メールメッセージの送信はアプリケーションのレスポンス時間に悪影響を与える可能性があるため、多くの開発者はバックグラウンド送信のために電子メールメッセージをキューに投入することを選択します。

というわけで、2段階認証のコードを送信するメールをキュー投入してバックグラウンドで処理できるようにしたいと思います。

# databaseキュードライバの設定
今回、キュードライバはDBを選択します。
[公式ドキュメント](https://readouble.com/laravel/9.x/ja/queues.html)に従い、ジョブを保存するためのテーブルを追加します。

“`console
php artisan queue:table
“`
“`cons

Laravelで2段階認証(2FA)を実装する

# はじめに
現代において、もはやログイン認証の強化は必須と言っても過言ではないでしょう。

そこで今回は、サインイン時にユーザーのメールアドレス宛にコードを送信し、そのコードを入力しなければログインできない、2段階認証(2FA)の仕組みをLaravelで実装した際のコードを備忘録として記したいと思います。

## 前提条件
– メールアドレスの確認ロジックを導入済みであること
https://readouble.com/laravel/9.x/ja/verification.html

# DBカラムの追加
2段階認証時に使用するコードや、コードの有効期限、2段階認証の利用有無を管理するカラムをusersテーブルへ追加します。

“`console
php artisan make:migration add_two_factor_auth_fields_to_users_table –table=users
“`

“`php:database/migrations/2024_01_01_000000_add_two_factor_auth_fields_to_users_