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

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

viteを削除後、なぜか削除したはずのViteでVite manifest not foundエラーが発生し、画面表示できず

viteを削除したうえでLaravel mixをダウンロードし、作成したアプリを表示させようとしたらVite manifest not foundエラーが発生してしまいました。

削除したはずのViteでエラーが発生したので、削除手順に問題なかったかを確認。

すると、
app.blade.phpとguest.blade.phpにてコメントアウトしていた、下記コードを削除してみたところ正常な挙動になりました。

↓コメントアウトしていた行を削除した。
<-- @vite([‘resources/css/app.css’, ‘resources/js/app.js’]) -->

“`php:app.blade.phpとguest.blade.phpに記載していた内容

DDDで扱うValueObjectについて 初歩編

## ValueObjectとは
ValueObjectとは、値をオブジェクトとして扱うパターンのこと(ルールあり。後記載)

## ValueObjectを扱う前に

基本データ型との比較をしていき、なぜオブジェクトして扱うと良い場合があるのかを記載

例えば**氏名を表す場合**

基本データ型の場合

“`php

オブジェクトで扱う場合

`

元記事を表示

Chapter6 検索とスコープ(6-2)

# whereによる検索

## 複数のレコードを得る

“`sample.php
$変数 = モデルクラス :: where(*フィールド名*,*値*)->get();
“`

## 最初のレコードを得る

“`sample.php
$変数 = モデルクラス :: where(*フィールド名*,*値*)->first();
“`

<注意店>

上記の`where`は、ビルだクラスのインスタンスを返します。
DBクラスの`where`では、`Illuminate\Database\Query`名前空間にある
Builderクラスのインスタンスが返されました。
モデルクラスの`where`では、`Illuminate\Database\Eloquent`名前空間にある
Builderクラスのインスタンスが返されました。

## nameを検索する

“`PersonController.php

元記事を表示

Laravelで画像投稿機能の作成

## はじめに
今回はとても時間かかったLaravelでの画像投稿機能を作ったのでそちらを記事に書いていこうと思います。
調べても思ったより上手くいかなくて、3日ほど使ってしまったのでこれから導入する人の少しでも参考になれば幸いです。

※1ヶ月前くらいから少しづつLaravelの勉強を始めた初心者ですので間違ってる箇所、至らない点などあると思いますが、指摘して頂けると助かります
(こちらはメモとして書いているのでフロント部分は簡易的なものになります)
ただ、コントローラーの部分はしっかり書いているので、画像を投稿して表示する機能を作成するのに少しでもお役に立てたら嬉しいです

### 使用する環境
– MacOS(M1)
– PHP 8.0.19
– Laravel 9.19.0
– MySQL 8.0.29

## 前提条件
laravelのプロジェクトを作成しており、認証機能(ログインや会員登録)まで作成済
リレーションは後日記事を出します

### ルーティングの作成

“`web.php
Route::get(‘/input’, [ContentsController

元記事を表示

【Laravel】orangehill/iseedが「No such file or directory」となる場合の対処

# orangehill/iseedとは
こちらのライブラリ
https://github.com/orangehill/iseed

DBデータからシーダーを生成してくれるというものです
[データベースからLaravelのSeederを逆生成する](https://qiita.com/imunew/items/3973658bdcae9ab77b8a)

が、しかし、、

# 😥 orangehill/iseedが動かない…!!!

Laravel7.x以前だと、
実行するとそんなディレクトリ無いよと言われてしまう。。:tired_face:

“`sh
# php artisan iseed tests

ErrorException : file_put_contents(/var/www/html/test/database/seeders/TestsTableSeeder.php): failed to open stream: No such file or directory
# ↑ そんなディレクトリ無いよ!僕は知らんへんよ! というエラー

元記事を表示

Docker内PHP開発環境(2022年水無月)[2/2]

# 初めに

[前回記事[1/2]](https://qiita.com/CinTAKE/items/ef25607d9a2724a049f5)

記事を読んでいただいている読者の皆様、いつもありがとうございます。
DockerによるPHP開発環境が完成したので、その環境にてデバッグ実行をしていく。
前回、当方がgithubで公開したコードには不具合があった。
ビルド途中で止まってしまったり、php-imap拡張がインストールされないなどの問題が発生していた。これは、Dockerfile.dvlの定義にいくつかミスがあったためだ。修正し、現在は正常ビルドできることを確認している。読者の皆様には、この場を借りてお詫びする。(2022/07/12)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/debda0ff-432a-3e6f-04e7-398d56ee7551.png)

まずはdolibarrのインストール作業を進めて正常動作するように設定する。

### Dolib

元記事を表示

PHP evalでハマった

レガシーコードの**eval**でハマり散らかしたので共有。

例えばこういう関数を定義して・・・
“`php
function foo($code, $val) {
$res = eval($code);
echo $res . PHP_EOL;
}
“`

普通に呼び出す。
“`php
//出力したい文字列
$val = “Hello World”;

//evalで実行するPHPコード(※再現するためにエスケープして埋め込んでます)
$phpCode = “echo \$val;”;

foo($phpCode, $val);
“`
“`shell
Hello World
“`

普通に動く。

## ここからが本題

静的解析で未使用のパラメータがありますって言われるので、消すと・・・
“`diff_php
– function foo($code, $val) {
+ function foo($code) {
$res = eval($code);
echo $res . PHP_EOL;
}
“`
“`shel

元記事を表示

【PHP初級⑨】for文応用

[問題]
整数値を5回入力させ、それらの値の合計を表示するプログラムを繰り返しを使って作成しなさい。

# コード
“`php
for($m = 1; $m <= 5; $m++){ $a = intval(fgets(STDIN)); $i[] = $a; } echo array_sum($i); ``` ↓ 5 2 3 9 10  と入力 # 結果 ``` 29 ```

元記事を表示

【JavaScript】要素のドラッグ&ドロップ

このように投稿した要素のドラッグ&ドロップができるよう実装します。
![メモドラッグ.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/f6f066e9-2f53-f517-4cc2-4e04a93dcdbf.gif)
# 投稿した要素のドラッグ&ドロップ
“`php


“`
投稿をブラウザに表示します。
次に、JavaScriptでドラッグ&ドロップを実装します。

“`javascript
$(document).on(‘dblclick’, ‘.memo’, function(event) {
let memo = document.querySelector(‘.memo’);
let currentD

元記事を表示

PHPでUUID作成

# はじめに
昔にUUIDを生成するプログラムを作成したが、最近ふとプログラムを見直した時にUUIDを生成していないことに気付いた。
今一度UUIDの生成方法を見直したのでその記録として残そうと思う。
ちなみに記述しているUUIDは全て**version4**である。
※UUIDもどきは**version4**のつもりで作成したが**version4**になっていなかった…

# UUIDの生成
下記の方の記事を参考にしました。
[JavaScriptでUUID4を実現させる](https://qiita.com/jack-low/items/98b760e98895ead4bad6)
“`php
$pattern = “xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx”;
$character_array = str_split($pattern);
$uuid = “”;

foreach($character_array as $character) {
switch($character) {
case “x”:

元記事を表示

Laravel の vite の css から public/assets を絶対パス参照させる

## やりたいこと
laravel的な環境で `app.scss` から `/assets/logo.jpg` を絶対パス参照したい
“`:ディレクトリ構成
www/
public/
assets/
logo.jpg
resouces/
css/
app.scss
vite.config.js
“`

## こうしました
rootに assets をシンボリックリンクしました。

“`bash
$ cd www
$ ln -s public/assets
“`

これで `npm run dev` 時も、`npm run build`時も、画像を参照できます。
“`css:app.scss
div {
background: url(“/assets/logo.jpg”)
}
“`

## これは避けた

“`js:vite.config.js
resolve: {
alias: {
“@”: `${__dirname}/public/`, // url(“@/assets/logo.jpg”

元記事を表示

Windows wsl2でSailを使ってLaravelをインストール後、BreezeでReactの導入をした時のエラー

# 経緯
これに従ってLaravelをインストールし、
https://laravel.com/docs/9.x/installation

これに従ってReactをインストールし、
https://laravel.com/docs/9.x/starter-kits#laravel-breeze

`npm run dev`実行後、[http:localhost](http:localhost)にアクセスすると真っ白の画面となり、コンソールには
`Failed to load resource: net::ERR_ADDRESS_INVALID 0.0.0.0:5173/@vite/client:1`
というエラーが出ていました。自分用のメモ程度ですが、解決策を示しておきます。

# 解決策

原因は、Githubのissueの中で見つかりました。https://github.com/laravel/vite-plugin/issues/28

こちらに従って、`npm run dev`実行後、public/hotのファイルの`0.0.0.0`
を`localhost`に変更することで

元記事を表示

[CentOS7] yum update で php 関連のエラーが発生

# アップデートでエラーが発生

久しぶりにアップデート作業を行うと以下のエラーが発生。

“`shell
$ sudo yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 8.3 kB 00:00:00
* base: ftp.riken.jp
* epel: ftp.riken.jp
* extras: ftp.riken.jp
* nux-dextop: mirror.li.nux.ro
* remi-safe: ftp.riken.jp
* updates: ftp.riken.jp
base

元記事を表示

Cpanelが入っている状態でLaravelをデプロイしたけど動かない問題

土日潰して調べた結果、あっさり解決したので備忘録

環境
さくらのvps CentOS7 cPanelインストール済み
さくらのvps CentOS7だけならMac環境で作ったlaravelプロジェクトをデプロイするだけですんなり動いたにも関わらず、

cPanelが入っている環境だと何故かWelcomeページすら動かない…

cPanel環境の情報すら少なくて困ってました。

public内のindex.phpにアクセスすればlaravelのウェルカムページができるはずなのですが
“`php:laravelproject
Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”. You are running 7.3.29-to-be-removed-in-future- macOS.
“`

ギャオピー!mac環境ではphp8.1で動いたけどvps環境は8.0.0これがダメだったのだろうか。。。(cpanelさんでは8.0.

元記事を表示

【個人開発】他人が書いた小説の続きを書けるWebサービスを作りました

# はじめに
本業バックエンドエンジニアが、フロントエンドからインフラまで一貫して知見を得るため、個人開発に挑戦しました。
その時に使用した技術や考えたことを記します。

# 作ったもの
突然ですが、2次創作はお好きですか?
– 公式の展開に満足できずにモヤモヤしたり
– 好きな作品の「What If」を創作したい

こういった経験ありますよね?
そんな問題を解決するために
NOVEL VERSE というWebサービスを作りました。

https://novelverse.jp

NOVEL VERSEは誰もが気軽に小説を書く事ができるWebサービスです。
当サービスに投稿された小説は、会員であればその物語の世界観や登場人物、時代背景などを引き継いでその物語の続きを書くことができます。
物語の展開、登場人物の行く末など、誰もが好きなように運命を決めて執筆する事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964196/0ff637d7-a4f5-33bf-b041-4762

元記事を表示

LaravelのバリデーションRule::inのパラメータをEnumで表現する

Laravelのバリデーションルール `Rule::in` の定義にEnumで指定できないかと思い試してみました。

## 検証バージョン
PHP8.1.6
Laravel9.16.0

## 定義方法
PHPのEnumは内部インターフェースとしてUnitEnumを持っており、`cases()`メソッドを用いてEnumの配列を取得することができます。
しかし、`Rule::in`の引数はstringもしくはintの配列のみ許容しているのでarray_columnでEnumから値を取得して指定してあげる必要があります。

### Pure Enumの場合
“`php:Pure Enum

元記事を表示

DockerのhttpdイメージでWebサーバーを立てる(PHPも動かすよ!)

初めての投稿です!
仕事でコンテナを使う機会が増えてきたので、勉強も兼ねてPHPの動くWebサーバーをDockerで作っていきます。

今回は[Docker公式のhttpdイメージ](https://hub.docker.com/_/httpd)を利用してWebサーバーを立てます。
HTMLだけではなくPHPも動くように作っていきます。
(普通にPHPの動くサーバーであれば[Docker公式のPHPイメージ](https://hub.docker.com/_/php)の「php:-apache」を使うとすぐに動かせそうな気がします。)

**なお、今回はDokerfileでの環境構築を行っていきますー。**

## 前提
– Dockerがインストールされていて、dockerコマンドが利用できる

## 作業環境
– Windows10
– Docker version 20.10.17, build 100c701
– Git Bash

## やってみよう!
### まずはディレクトリ構成
“`:構成
.
├─ Dockerfile
├─ httpd.conf

元記事を表示

HTMLで縦書き台本を描画

声劇台本を投稿できるサイトを作成しました。
ボイコネというSNSサイトのフォーマットの台本をそのまま投稿できるようにしています。

https://taltal3014.lsv.jp/

ただ、台本は横書きだと読みづらい・・・。
ボイコネの縦書き仕様が好きだったので、同じように縦書き台本を表示できるかを試してみました。

## 環境
 ・PHP7.4 (フレームワーク:fuelPHP)
 ・MariaDB
 ・jQuery3.3
 ・Bootstrap4

## やりたいこと
 ・DBに格納された台本テキストを横書きHTMLで描画
 ・「縦書きで表示」ボタンを押すとモーダルで縦書き画面を表示

## DBに格納された台本テキスト原文

## ブラウザ上での表示(横書き) 
【PHP初級⑧】階乗

[問題]
整数値を入力させ、その値の階乗を表示するプログラムを作成しなさい。ただし、0以下の値を入力した場合は1と表示する。

# コード
“`php
$a = intval(fgets(STDIN));
if($a > 0){
echo array_product(range(1, $a));
}else{
echo ‘1’;
}
“`

↓「5」と入力

# 結果
“`
120
“`

↓「-2」と入力

“`
1
“`

☆array_product()
・・・配列の値の積を計算する関数。

元記事を表示

laravel Featureテストコードで自らにリクエストを送信する方法

# 概要

– laravelのテストコードにてリクエストを送る方法をまとめる。

# 方法

1. `vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php`を継承しているFeatureのテストコードを用意する。(`$php artisan make:test テストクラス名`でテストクラスを生成すれば良い。)
1. Featureテストのテスト関数内に下記のように記載することでGETのリクエストを送信する事ができる。レスポンスが返される。

“`php
$response = $this->get($url, $requestBody, $header);
“`
1. `$url`にはルーティングで定義しているパス部分(ドメイン以外)を格納して渡す。例えば`http://localhost/index`のエンドポイントにGETのリクエストを送りたい場合、`$url = ‘/index’;`とする。`$url`は必須で渡す必要がある。
1. `$requestBody`

元記事を表示

OTHERカテゴリの最新記事