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

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

Laravelでリポジトリーパターンを使う

## 実装

### 基本的なファイルを作成

“`bash
# Model, Controller, Migration, Seederファイルを作成
php artisan make:model [Model名] -crms
“`

### Interfaceを作成

“`php
// app/Interfaces/TaskInterface.php

namespace App\Interfaces;

interface TaskInterface
{
public function index();
public function store(array $data);
public function show(string $id);
public function update(string $id, array $data);
public function destroy(string $id);
}
“`

### Serviceを作成

“`php
// app/Services/TaskService.php

元記事を表示

Flowを半年間触ってみた感想

# 初めに
PHPフレームワークFlowを触り始めて半年がたちました。
Flow関連で書いた記事も気が付くと20前後となり、半年前と比べてかなり知識もついてきたと感じます。
今回は、半年触ってみた感想を記録しておこうと思います。

# FLowとは
Flowとは[flownative](https://www.flownative.com/)社が出しているオープンソースのPHPフレームワークです。

https://flow.neos.io/

**ドメイン駆動設計**(DDD)を中心原理として設計されたフレームワークであり、DDDを満たすための機能を多く提供しています。

## Flowでドメインモデリング
Flowはドメイン駆動設計(DDD)の概念を用いた実装を強く推奨しているフレームワークです。そのため、開発者がDDDを用いた実装がしやすくなるような機能を多数提供しています。

* **ドメインモデルを格納するためのディレクトリ**が最初から用意されている
* **ドメイン知識を表現するためのアノテーション**が用意されている
* ドメインモデルを元に**TBLが自動生成される*

元記事を表示

PDO (PHP Data Objects)・2回目

## はじめに

PDOについてまとめる・2回目

### SQLを発行しデータを登録する

insert.phpで入力された内容を、insert_process.phpで登録処理する。

“`php:insert_form.php



データの登録



元記事を表示

バックエンドエンジニアやめませんか?【KiZooNa.js】

バックエンドなくてもフロントで完結するライブラリ作りました。サンプルでTodoアプリにしました

See the Pen
KiZooNa.js TODOs
by John Doe (@04)
on CodePen.

元記事を表示

PHPで、Magickを使って写真を撮りモザイクかける

# PHPで、Magiickを使って写真を撮りモザイクかける

![aaaaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590410/57895b5b-e8ab-a0dc-2712-91df252fea20.png)

この画像のようなサイトです。

* サイトにアクセスするとカメラが起動します
* 「写真を撮る」ボタンをクリックすると、撮影し、PHPに送信します
* PHPで、Magickを使って、モザイクかけます。(ただ、画像を縮小して、拡大しただけですが)
* PHPからのレスポンスを待って、見ているページに表示します

[サンプルサイトを用意しました](https://taiyou-tekateka-iitenki.online/ “カメラ撮影&編集&レスポンス”)

以下、カメラ撮影するページのHTMLコードです。

~~~html:index.html



元記事を表示

本当にあった検索アンチパターン

検索機能を実装する際に出会ったアンチパターンをご紹介します。

## 1. 検索フォームが POST メソッド

“`html



“`

通常、検索機能は「読み取り」操作であり、GETメソッドの使用が推奨されます。
GET メソッドを使うと以下の利点があります。

– ブックマーク可能: `GET` リクエストはURLにクエリパラメータを含められるので、ブックマークやリンクの共有が容易になる
– キャッシュ可能: ブラウザやサーバーが `GET` リクエストの結果をキャッシュでき、パフォーマンス向上が期待できる

## 2. 検索条件をセッションに入れて、リダイレクトして検索結果画面を表示

“`php
public function search(Request $request): RedirectResponse
{

元記事を表示

PHPを学んでCtoC音楽イベント同行者マッチングサービスを開発してみた

## 自己紹介
はじめまして!
2023年12月に株式会社ドリーム・シアターに入社した26歳のWebエンジニアです。
もともとIT業界には携わっていましたが、実装経験が乏しく経験を積むため弊社に入社いたしました。

## サービス概要
### CtoC音楽イベント同行者マッチングサービス
https://github.com/takm333/music-matching-app

MELDというサービスの見た目と挙動を参考にフロントエンド、バックエンドの実装を行いました。
管理者画面は自分で設計、実装を行っています。
https://meld.co.jp/

ライブ等の音楽イベントに一緒に行ける人を探して、マッチングすることができるサービスです。
以下のようなユーザーをターゲットにしています。
* チケットを持っていて、一緒にライブに行ける人を探している
* チケットが余っているので、持っていない人と行きたい
* チケットを持っていないので、余っている人と行きたい

ユーザーはイベントごとに自分の状態を登録できます。
自分のステータスに対し、適切なユーザーが表示されマッチング

元記事を表示

【PHP】指定した値が配列のカンマ区切りに含まれてるか検索

やりたいこと。生息地が【丘陵】のポケモンを検索したい。

ただし生息地はカンマ区切りになっている

# コード
“`PHP
1,’name’=>’イシツブテ’,’habitat’=>’渓谷,洞窟’]
,[‘id’=> 2,’name’=>’イワーク’,’habitat’=>’砂漠,鉱山’]
,[‘id’=> 3,’name’=>’ウソッキー’,’habitat’=>’鉱山,地中’]
,[‘id’=> 4,’name’=>’ハガネール’,’habitat’=>’丘陵,窪地’]
,[‘id’=> 5,’name’=>’サイドン’,’habitat’=>’渓谷,丘陵’]
];

function searchValueInArray($query_data, $value) {
$keys = [];
foreach ($query_data as $key => $item) {
$elements = explode(‘,’, $item[‘habit

元記事を表示

【PHP】Cookie管理「設定・取得・削除」

あえてCookieにデータ保持しなきゃいけないシチュエーションってそんなに多くない気もしますが…。

強いて言うならこれくらいな気がします。
– “HttpOnly“属性でセキュアにしたい
– データごとに保持期限を変えたい

そこで今回は、PHPでのCookieの設定・取得・削除についてまとめてみました。

PHP標準関数とSymfonyが用意しているComponentを利用した2パターン紹介します。

## Cookie設定
### PHP標準関数の場合
“`php
setcookie(
‘cookie_name’, // Cookieの名前
‘cookie_value’, // Cookieの値
time() + 3600, // 有効期限(例:1時間後)
‘/’, // パス
null, // ドメイン
false, // セキュア
true, // HttpOnly
)
“`

### HttpFoundationを使う場合
“`php

元記事を表示

CodeIgniterについてアウトプットしてみた~概要編~

## はじめに

今使っている人は少ないかもしれませんが…
案件でCodeIgniterを使う機会があったので、簡単ではありますが備忘録も込めて、記事にしました!!!

### CodeIgniterとは 

PHPでWebアプリケーションを作っていく中で、みなさんフレームワークを使うことになると思いますが、その1つになります。
アメリカの会社`EllisLab`が2006年に初版をリリースし、2014年からは`ブリティッシュコロンビア工科大学`が開発を行っています。
2024/04/19現在の最新バージョンは、4.5.1になります。
※githubリポジトリは[こちら](https://github.com/codeigniter4/CodeIgniter4)

### シェア

PHPのフレームワークで言うと現在日本では、新しいプロジェクトにおいてはLaravelを使うことがほとんどだと思います。
ただ、[Kinsta](https://kinsta.com/php-market-share/)によるとCodeIgniterを使ったサイトも多いことがわかるので、世界的に見たら

元記事を表示

PDO (PHP Data Objects)

## はじめに

PDOについてまとめる

### PDOとは

PHPのデータベース抽象化レイヤー。
データベース抽象化レイヤーはデータベース毎の違いを吸収し、アプリがデータベースに対応して何んらかのアクセスを試みる際に共通の手段を提供する。

### データベースへの接続

データベースへの接続を確立する

“`php:connect.php
$dsn = ‘mysql:dbname=testdb; host=127.0.0.1; charset=utf8’;
$usr = ‘testuser’;
$passwd = ‘testpass’;

try {
$dbh = new PDO($dsn, $usr, $passwd);
echo ‘接続成功’;
} catch (PDOException $e) {
echo ‘接続失敗: ‘ . $e->getMessage();
} finally {
$dbh = null;
}
“`

### PDOクラス
“`php
new PDO(string $dsn [, string $usernam

元記事を表示

AtrisanとPHP UnitでAPIの単体テストを自動化してみた

はじめまして。
rexcornuでは主にフロントエンドを担当しているインターンのやーくんです。

今回は、rexcornuで自社サービスとして提供しているTechMatchのサーバサイドの単体テストをArtisanとPHP Unitで自動化するにあたって実施したことや、このテスト工程を経験して感じたことをまとめます。

​まず、単体テストという言葉ですが、私が担当しているTechMatchにおいてはモジュールやコンポーネントの動作確認と位置付けています。

# 目次

– [はじめに:担当しているTechMatchについて](#はじめに:担当しているTechMatchについて)
– [なぜ単体テストを自動化したのか](#なぜ単体テストを自動化したのか)
– [テストの準備や実施の内容](#テストの準備や実施の内容)
– [意識したこと](#意識したこと効率的な優先順位を付けたテスト作成実行)
– [単体テストの実施結果](#単体テストの実施結果)
– [テスト工程を経験して感じたこと](#テスト工程を経験して感じたこと開発でもテストでも自動化は良い)
– [今後の課題](#今後の課題)

元記事を表示

LaravelでFirebase認証を使う

# 記事の内容
LaravelでFirebase認証を実装時にちょっと詰まったので、未来の自分が困らない&誰かのだめになればと記録に残しておきます。

## 事前準備
Composerでkreait/firebase-phpとkreait/laravel-firebaseをインストールする。

“`
composer require kreait/firebase-php
composer require kreait/laravel-firebase
“`

.envにFirebaseのクレデンシャル情報を記載したjsonファイルのパスを記述する。
※jsonファイルはfirebaseからダウンロードしてください。

“`
FIREBASE_CREDENTIALS=firebase_credentials.json
“`

config配下に設定ファイルを作成。

“`
php artisan vendor:publish –provider=”Kreait\Laravel\Firebase\ServiceProvider” –tag=config
“`

confi

元記事を表示

Laravelを日本語対応させる方法

Laravel Breezeなどでログイン機能を実装したはいい物の、日本語の設定方法がわからず困っている方に必見です。

【前提条件】
Laravel Breezeのインスチールをお願いします。

方法は2種類あり、それぞれ解説しますが2つ目の方がおススメです。

# 1つ目
①config/app.php を修正して、言語と時間を日本に変更しておく。
“`config/app.php
// ‘UTC’から’Asia/Tokyo’に変更
‘timezone’ => ‘Asia/Tokyo’,

// ‘en’から’ja’に変更
‘locale’ => ‘ja’,

// ‘en_US’から’ja_JP’に変更
‘faker_locale’ => ‘ja_JP’,
“`

②langディレクトリの作成
“`
# Laravel sailで環境構築をしている人向けコマンド
$ ./vendor/bin/sail php artisan lang:publish

# Laravel sail以外で環境構築をしている人向けコマンド
$ php ar

元記事を表示

PHP の clone について、後輩に口頭で説明したのに理解して貰えなかったので記事で説明する

別に記事での説明も上手ではないんですけど…説明スキルが欲しいです

# PHP の clone について

PHP の clone はシャローコピー(浅いコピー)です!

シャローコピー(浅いコピー)って何だ!?

## シャローコピー(浅いコピー)とディープコピー(深いコピー)

### シャローコピー

プリミティブプロパティの値(int, string, float, bool, …etc)は新しいオブジェクトに複製し、別アドレスを指します。

オブジェクトプロパティの値は clone 元のオブジェクトと同じアドレスを指します。つまり、clone 先のオブジェクトプロパティの値が書き換えられると、clone 元のオブジェクトプロパティの値も書き換わります。

### ディープコピー

プリミティブプロパティの値もオブジェクトプロパティの値も新しいオブジェクトに複製して、別アドレスを指します。

文字だけだと口頭と同様で意味わからないため、下記サンプルコードです。

### サンプルコード(clone 元のクラス)

“`php
namespace App\ValueObje

元記事を表示

エラーが怖い?それならSyntax Errorを「起こす」ことから始めよう

# はじめに
こんにちは! @RyoSakon001 です。 @Fignn [Fignny株式会社](https://fignny.co.jp/)でPython, PHP, TypeScriptのエンジニアとして働いています。
エンジニアとして業務を始めたての頃は、エラーにとにかく悩まされがち。そんなあなたにピッタリの情報をお届けできればと思います。

## こんな人に読んでほしい
– 駆け出しエンジニアの方
– 駆け出しWebデザイナーの方
– 育成担当ベテランエンジニアの方

## エラーの大半って、実はコレ
一括りに「エラー」と言っても、色々な種類があります。超〜アバウトに、大別してみます。

1. **Syntax Error**
1. **Undefined**
1. **その他**

その中で、1, 2番がおよそ8割を占めていると思います。そして、実は本当に難しい(可能性がある)のは3番だけで、1, 2番は初心者の方でも簡単に解決できてしまうのです。

## エラーへの恐怖心をなくすには、自分で「わざと」起こしてみること
**「最初は怖いけど、やってみると大したことなかった

元記事を表示

QRコード

“`php
use ZipArchive;
use Illuminate\Support\Facades\Storage;

public function createAndDownloadZip()
{
// ZipArchiveを作成してzipファイルを開きます
$zip = new ZipArchive;
$zipFileName = ‘archive.zip’;
$zipFilePath = storage_path(‘app/work/’ . $zipFileName);

if ($zip->open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
// QRコードのデータ
$qrCodeData = ‘https://example.com’;

// QRコードをjpgファイルとして作成して直接zipに追加します
$qrCodeFileName = ‘qrcode.jpg’

元記事を表示

バリデーションについて

Formを送信した際に内容が空だとエラー画面に移動してしまう際の対策

# バリデーションとは
テストとその後の生産で実行される手順、プロセス、または活動が、すべての段階で望ましいレベルのコンプライアンスを維持していることを証明する文書証拠を確立するプロセス。

https://en.wikipedia.org/wiki/Validation_(drug_manufacture)

https://readouble.com/laravel/11.x/ja/validation.html#quick-writing-the-validation-logic

大まかに言えば、内容が正しいかチェックすること
“`php
$validatedData = $request->validate([ルール],[カスタムメッセージ]);
“`

# コントローラー内にバリデーション追加
### ルールの追加
第1引数は、各フィールドに対するバリデーションルールの配列。
バリデーションの方法は数種あるが今回は簡単なcontrollerに直接書き込む方法でしてみる。
この方法だとcontroll

元記事を表示

webアプリ開発で意識したこと

# 初めに
https://qiita.com/opatu07/items/be0d5e38710ba0854fb4

この記事で書いていたWebアプリが完成したので、その開発過程で意識したことを紹介します。

# ソースコードと使い方
https://github.com/opatu07/portfolio

# webアプリ開発で意識したこと

## webアプリの品質を担保するために

テストケースを作成しました。

https://qiita.com/opatu07/items/ceba265b439e20839ab9

この記事から読めます

## エラー解決について

https://qiita.com/opatu07/items/117192d3c829903c846e

https://qiita.com/opatu07/items/d0ac1cf830e6145165e5

開発過程で出たエラーをqiitaにまとめるように意識をしています。

## レスポンシブ対応

iPhone6/7/8のレスポンシブ対応動画です。

![responsive_fu

元記事を表示

PHP 8.3の新規機能と改善

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527282/5ae7029c-df9c-56d9-12e6-29a8afbf4f57.png)

# この記事について

PHPは、毎年恒例となっている新しいメジャーまたはマイナーバージョンのリリースを続け、2023年11月23日にリリースされたPHP8.3も例外ではありません。この新バージョンは、多くの新機能と改善を加え、PHPの汎用性と進化する言語としての地位をさらに固めています。

この記事では、PHP8.3に導入された注目すべき新機能を紹介します。

# 新機能

### クラス定数の型付け
クラス定数に型をかけるようになりました。

“`php

// valid
class TestClass {
const string MY_TEXT = ‘my text’;
}

// valid
interface TestInterface {
const string MY_TEXT = ‘my tex

元記事を表示

OTHERカテゴリの最新記事