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

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

【nl2br】Laravel Bladeテンプレートで改行を表示する方法

## 環境
– macOS Ventura 13.6
– PHP(8.1.27)
– Laravel(9.43.0)
– Node.js(18.17.1)
– Visual Studio Code

## コード
bladeテンプレート内で以下のコードを入力すると改行が出力されます。
(ユーザーが送信した情報をvalueという変数で受け取り、textというデータを取得することにします。)
“`
{!! nl2br(e($value->text)) !!}
“`

## 解説

### e関数
`<,>,&` などの特殊文字列を安全なエンティに変換するための関数です。
今回の場合
“`
{!! nl2br($value->text) !!}
“`
でも動きますが、セキュリティリスクの観点から記述する必要があります。

### nl2br関数
PHP標準の関数で、改行文字`\n`を改行タグ`
`に変換するための関数です。

### {{ !! !! }}
Bladeテンプレートの記法でHTMLをエスケープせず、そのまま出力することができます。

元記事を表示

Laravel Breezeを使ったら簡単に認証機能を実装できるらしい

# プロジェクトを作成〜Breezeインストールまで
“`bash
composer create-project laravel/laravel breeze-sample

composer require laravel/breeze –dev
“`

# BreezeをインストールしたらArtisanコマンドでBreezeの動作に必要なコード群を生成する
“`bash
php artisan breeze:install
“`

route/web.phpにコードが生成されているらしいので確認してみる
“`php

元記事を表示

Laravel始めてみる

# Laravelの特徴
– 学習コストの低さ
Laravelの最大の特徴は**学習コストの低さ**です。何がどこに保存されているのかわかりやすいフォルダ構成と、プロジェクトの設定が目的ごとに管理されているので情報を探しやすくなっています。また、公式ドキュメントの情報もバージョンごとにまとまっており、欲しい情報が探しやすくなっています。

# MVCパターン

名前 説明
Model ビジネスロジックやデータベース操作などを担当
View HTMLなどのレスポンスボディの生成を担当
Controller リクエストを受け付け、モデルとビューの橋渡しを担当

# コマンドによるプログラム作成
Lara

元記事を表示

EC-CUBE2系で「読み込み専用」のセッションを利用する

## 前書き

EC-CUBE2系を使っていて、結構悩ましいのがセッション周りの制御ですよね。

排他制御周りで、↓の件があったりします。
http://svn.ec-cube.net/open_trac/ticket/571

EC-CUBE 開発フォーラムでも、その関係のやりとりが見当たります。

[セッション変数の排他制御に不具合を見つけたのですが・・・](https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=5090&forum=1)

[セッション排他制御でのバグについて](https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=8247&forum=2&viewmode=flat&order=ASC&start=10)

排他制御する最も簡単な方法は、セッション管理をファイルにして、PHP標準のセッション管理(SessionHandler)に乗っかる方法(少しread周りはいじる)ですが、ファイルではない方法でセッション管理をしたい場

元記事を表示

Laravel Intervention Imageが使えない

Laravelに
“`zsh
composer require intervention/image
“`

Intervention Image
をインストール後、
“`php:config/app.php
‘providers’ => ServiceProvider::defaultProviders()->merge([

Intervention\Image\ImageServiceProvider::class,
])->toArray(),

‘aliases’ => Facade::defaultAliases()->merge([

‘Image’ => Intervention\Image\Facades\Image::class,
])->toArray(),
“`
を追加しましたが、
“`
Class “Intervention\Image\ImageServiceProvider” not found
“`
というエラーが発生し使用できません

元記事を表示

雑記

## 良いコードとは
* 他人が見て理解しやすいコード
* 将来の自分が見て理解できるコード(過去の自分に感謝できるコード)

もちろん、オブジェクト指向の知識がある前提。
ドメイン知識はコードに収めるように書く。つまり、コードを読めばドメイン知識が得られるように書く。
→ ドメイン知識は変化が激しい。よって、ドメイン知識に係る処理も頻繁に変更できるように、アーキテクチャ及びデプロイ環境を整備する必要がある。

## Webアプリフレームワーク
Webアプリに必要な機能は凡そ出揃っている。下記の機能をクラスで明示的に実装すればそれはもうフレームワークと言ってよいと思う。
* URIルート処理・ディスパッチャー(フロントコントローラーや.htaccess)
* リクエストの処理
* バリデーター
* 出力(HTML・JSON・他)の処理(テンプレートエンジンを含むView系クラス)
* セッション管理
* 永続データの制御(ORMを含むModel系クラス)
* 環境別設定管理(.envやconfig)
* 定数管理(Enum含む)
* グローバル関数(Helper系)
* 認証
* 認可

元記事を表示

PHP フレームワーク作成の基礎

## 必要なクラス
* Request.php
* Validator.php
* View.php
* Dispatcher.php
* Route.php
* Config.php
* Helper.php
* Controller.php
* Model.php
* autoLoader.php

## テンプレートエンジンの選択
* 使用しているエディタの整形機能を阻害しないものを選ぶ
* 古いテンプレートなどは整形すると動かなくなる場合がある
* 成型方法が統一されていないとgitなどのバージョン管理システムを導入する場合に、整形方法の違いが差分となって現れ、変更箇所が特定しにくくなる。

## 公開ディレクトリとドキュメントルート
* フレームワーク内で公開ディレクトリはpublicなどとしてディレクトリを分ける
* ドキュメントルートにはpublicのシンボリックリンクを張ると可用性が向上する

## フロントコントローラーとページコントローラー
* フロントコントローラー
* ページコントローラー

## ディレクトリ構成(参考はLaravel)
* a

元記事を表示

2023年のEC-CUBEを振り返る

EC-CUBE コミュニティマネージャーの梶原です。

EC-CUBE Advent Calendar 2023 ラスト(25日目)は、毎年恒例となりました、今年2023年の振り返りをしたいと思います。

コロナも第5類に分類され、かなり日常を取り戻した感のある1年でしたね。
私個人としても、今年はリアルイベントにも複数参加、登壇もさせていただき、リアルで多くの人と会える喜びを大いに感じることができた1年でした。今年の漢字が「税」ということで、なかなか厳しい1年でもあったと思いますが、皆様はいかがお過ごしだったでしょうか。
まあ、そういうことで、ここからEC-CUBEの1年を振り返りをしていきますので、皆様もご一緒にこの1年を是非振り返ってみてくださいませ。

## EC-CUBE4.2

2022年にバグバウンティを行い、セキュアでクオリティの高いEC-CUBEということでVer4.2がリリースされました。今年は、そのVer4.2を更にセキュアでクオリティの高いバージョンにしていくために、3回もバージョンアップしました。EC-CUBEが年に3回バージョンアップすることもなかなかない

元記事を表示

【初心者向け】CRUD機能の責任範囲の考え方

これは[株式会社マイホム アドベントカレンダー2023](https://qiita.com/advent-calendar/2023/myhm)の 25日目の記事です。
記事の内容は会社の業務とは一切関係ありません。

## 前置き

最近、初心者のエンジニアさんとやりとりする機会がありまして、その中で出てきた、そういえば入門書的なものを読んでもこういった部分の考え方をフォローされることってあまりないかもしれないなぁ、という点について書いてみようと思いました。

## 前提とする状況

話の要点を絞るために使用例の多いパターン、MVCタイプのフレームワーク(Laravel)を使って、なるべくシンプルなCRUD(作成、読み出し、更新、削除)操作を行うWeb APIについて考えてみます。
シチュエーションとしては、同じチームに所属したユーザ間で記事を共有、コメントなどができるよくあるWebアプリケーションを想定してみます。

サンプルコードを簡単にするために実用性は一旦横に置いて、ユーザは必ず一つのチームに所属するという単純構造のデータベースで考えます。

![crud_db.png](

元記事を表示

PHPで名前のマスキングをする

# 環境
– php:8.1

# 対象
– 名前のマスキングをしたい人

# 対応
今回は以下のような関数を作りました
“`php:Controller.php
private function nameMasking(string $value)
{
// 正規表現を使用して文字列から空白(半角スペースと全角スペース)を取り除く(名前と苗字にスペースがあると綺麗にマスキングされないため)
$stringValue = preg_replace(“/( | )/”, “”, $value);
// 文字列を配列化
$arr = mb_str_split($stringValue);
$itemCount = 1;
$replaceValue = ”;
foreach ($arr as $item) {
if ($itemCount % 2 === 0) {
// 偶数文字目だったら●に置き換え

元記事を表示

Ubuntu 23.10(Mantic Minotaur) で PHP 3.0.18 の phpinfo を見てみたい

[php.net](https://www.php.net/)で「[Download](https://www.php.net/downloads.php)」→「[Old archives](https://www.php.net/releases/)」とリンクを辿ると、「Unsupported Historical Releases」というページが表示されます。
ふと、このページの一番下にある「3.0.x」が、最新(2023年12月25日時点)のUbuntu環境(Ubuntu 23.10(Mantic Minotaur))で動くのかが気になったので試してみました。

まずは、Ubuntu 23.10(Mantic Minotaur)のDockerコンテナを起動します。

“`
$ docker pull ubuntu:mantic
$ docker container run \
–rm \
-p 127.0.0.1:8080:8080 \
-it ubuntu:mantic \
bash
“`

PHPのインストールに必要なパッケージ群をインストールします。

“`
# a

元記事を表示

[PHP/Laravel] finalやreadonlyなクラスをモックする

# final (継承不可) なクラスをモックしたい!

不必要な継承を防ぐためにfinalキーワードをクラスに対してつけるような運用をしていると、時折テストで困る場合が出てくるかと思います。

例えば、finalキーワードがついているとモックができません。
かといってモックを可能にするためだけにfinalを外すのも気が引ける・・・

“`
$ php artisan test

FAILED Tests\Unit\BookingServiceTest > can send slack message

The class \App\Services\SlackService is marked final and its methods cannot be replaced. Classes marked final can be passed in to \Mockery::mock() as instantiated objects to create a partial mock, but only if the mock is not subject to type

元記事を表示

PHPでEclipse使用時の環境構築とデバッグ設定について

# はじめに
環境構築の手順書がなく、自由に好きなのを使っていいよという現場に入り
VSCodeで、var_dumpを都度都度書いて、デバッグするの面倒だよなーという経緯から、
Eclipseを使って進める事を決意。ただ、前の現場と違い手順書がない為、記憶を辿りながら、進めたところ、躓いたところがあったので、筆者の備忘兼ねて纏めてみました。

# Eclipseを用いた場合のメリット
・リアルタイムでの変数の中身を確認しながらデバッグができる
・var_dumpなどデバッグする為の、記載をしなくて済む

# Eclipseを用いた場合のデメリット
・環境構築が面倒。使うパソコンによって、環境構築時にエラーがでる内容が異なる。
・デバッグ時に、phpMyAdminを立ち上げているとパソコンのスペックが低い場合にフリーズする。

# 構築の手順

①下記からxamppをダウンロードし、インストール
https://sourceforge.net/projects/xampp/files/

②下記からeclipseをダウンロードし、解凍する
https://willbrains.jp/in

元記事を表示

2年間1人アドベントカレンダーをやって選んだ、おすすめSymfony Component 5選

[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の22日目の記事です。

[2022年](https://qiita.com/advent-calendar/2022/symfony-component)、[2023年](https://qiita.com/advent-calendar/2023/symfony-component)と2年間、1人アドベントカレンダーをやってきました。延べ49個のSymfony Componentを紹介してきました。
アドベントカレンダーの最後に、独断と偏見で選んだおすすめSymfony Componentを紹介します!

## 1. Symfonyといえばこれ、 “Dependency Injection”

1つめはDependency Injectionです。DIやオートワイヤリングによる自動注入を提供します。Symfony以外でも使えますが、Symfonyではほぼ何も考えずともこの恩恵を受けられます

元記事を表示

全然よくわかんないけど「phpでも使ってみない?」

# PHPって?
PHPというのは、Webサーバー上で動くプログラミング言語です。
Webサーバー上のリクエストに対して動的にHTMLを生成することができます。

まずは物は試しです。

なお、今回はPHPの環境構築の話は長いのでしません。

# 書いてみよう

“`php

“`

これでアクセスしてみてください。
ちゃんとHello, Worldと表示されたでしょうか。
![スクリーンショット 2023-12-25 050829.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/f6851ea1-3e49-752a-ee17-ae57a96aac4e.png)

phpでは`echo`関数を使用することで、文字列を出力することができます。

# ちょっとした計算をしてみよう

“`php

“`

これでアクセスしてみてください。
なんと、PHPでは計算もできるのです!

…そり

元記事を表示

Docker で Laravel 環境構築

# はじめに
私は2023年10月より、内定直結型エンジニア学習プログラム「アプレンティス」に2期生として参加しています。

[【働きながら学べる】エンジニア実習 アプレンティス](https://apprentice.jp/)

カリキュラムの中でチーム開発があり、Docker での Laravel 環境構築を担当することになったので、備忘録としてまとめます。

## 目次
[1.導入するもの](#1-導入するもの)
[2.ディレクトリ構成](#2-ディレクトリ構成)
[3.compose.yaml](#3-compose.yaml)
[4.追加設定](#4-追加設定)
[5.ガントチャートによる進捗管理](#5-ガントチャートによる進捗管理)
[6.タスク管理機能の実装](#6-タスク管理機能の実装)
[7.デイリポ 機能の紹介](#7-デイリポ 機能の紹介)
[8.振り返り](#8-振り返り)

# 1. 導入するもの
今回は PHP のフレームワークである Laravel の学習期間ということで、Laravel で開発ができるように環境を整えます。
今回は PHP と Apa

元記事を表示

【PHP】HelloWorldを表示させる方法

# はじめに
今回は`PHP`で`HelloWorld`を表示させていこうと思う
“`php
echo ‘Hello World’;
“`
実行する
# さいごに
今回は`PHP`で`HelloWorld`を表示させた

元記事を表示

Kubernetes上でLaravelを立ち上げてみる。

# はじめに

[naritomo](https://twitter.com/KanagawaLo81146)と申します。

本職はインフラエンジニアを行っています。

最近色々活用し始めているK8Sについて、Laravelを立ち上げてみました。

いろいろアドバイスいただけると嬉しいです。

## 立ち上げ概要

Laravel9以上のサイトをK8Sで立ち上げる手順になります。

必要なソースは以下にまとめてあります。

https://github.com/naritomo08/laravel_K8S

## 参考URL

[M1 MacBook上へのローカルk8s環境(minikube、kind)セットアップ手順](https://qiita.com/kyontra/items/b1696df6ea072fa48c34)
[gcloudコマンドでGKEを立ち上げてみた。](https://qiita.com/naritomo08/items/d1a3122264b248915360)

## 事前準備

参考URLを参照し、M1 Macにて、ローカル環境またはGKE環境ができてい

元記事を表示

ミューテータとappend()

## はじめに
私は株式会社qnoteにて、勉強会の幹事を務めております。
2023年度勉強会の珠玉のネタを2023Qiitaアドベントカレンダーに投稿していこうと思います。

## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者

## 結論
ミューテータは便利なので使いましょう!
ただし、記述箇所は慎重に検討しましょう。

## ミューテータの定義はモデルで

https://www.yoheim.net/blog.php?q=20181105

“`php

元記事を表示

【Laravel】ヘルパー関数data_getの第二引数がnullの場合の挙動

## はじめに
Laravelで提供されているヘルパー関数data_getの第二引数がnullだった場合の挙動が意図しないものだったので、結果と実際どのような処理が行われているかを理解するために記事をまとめます。

## 実証環境
PHP 7.4
Laravel 6.2

## 引数による結果の違い
第二引数によって、以下ような結果になります。
“`php
$characters = [
‘player’ => [‘cuphead’, ‘mugman’],
‘boss’ => [‘The Root Pack’, ‘Goopy Le Grande’, ‘Ribby and Croaks’]
];
dump(data_get($characters, ‘player’, ‘第二引数のキーなし’));
// array:2 [▼
// 0 => “cuphead”
// 1 => “mugman”
// ]
dump(data_get($characters, ‘mob’, ‘第二引数のキーなし’));
// “第二引数のキーなし”
dump(data_get($c

元記事を表示

OTHERカテゴリの最新記事