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

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

2歳息子「パパ,なんでグローバルヘルパーを使わないの?」

:::note warn
前置き
本記事は, Laravel のグローバルヘルパー関数は **使い所を考えよう** という趣旨の記事です.
:::

# リモートワークの朝
ワイ「ファ〜〜〜」
ワイ「今日も12時間寝てもうたわ」
ワイ「さて,業務開始や」
ワイ「今日も Laravel 書いていくで〜」

“`php
use Illuminate\Support\Collection;

// とりあえず心配なので作っとく
$collection = new Collection();
“`

2歳息子「(PC の画面を覗き込む)」

ワイ「どうかしたん?」

息子「・・・」

# リモートワークの昼
ワイ「よーし,昼休憩3時間取ったし,そろそろ業務再開や」
ワイ「さっきの続きやけど,まずは現在時刻を取得せなあかんな」

“`php
use Carbon\Carbon;

// 多分現在時刻が必要になる予感がする
$now = Carbon::now();
“`

息子「(また PC の画面を覗き込む)」

ワイ「な,なんやねんさっきから」
ワイ「ワイの画面にゴミでも付いとるか?

元記事を表示

PHPの値渡し、参照渡しについて

最近学んだのでまとめます。

## 値渡しとは??
“`php
$a = 1;
$b = $a;
echo $b;
// 1
“`
僕含め、よく皆さんが使っているであろうデフォルトの変数の代入です。
想定通りの挙動ですね。
内部的には、$aの**中にある1という値を複製して**$bに渡しています。
文字通り、「値渡し」ですね。

## 参照渡しとは??
“`php
$a = 1;
$b = &$a; // &を使うことで、$aを$bに参照渡しできる
$a = 2;
echo $b;
// 2
“`
あれ?$bには「1が入ってる$a」を代入してるから、$bをechoしたら1じゃないの??
しかし、2が出力されます。
これは、内部的には「**変数$aそのものを$bに渡して**」います。
(正確には、$aの参照先を$bに渡す or 変数のメモリ番地を渡すという言い回しでした)
$aを$bに参照渡しした結果、**$aの値を変えると$bの値も変わります。**
なので、$a、$bも2になってしまう仕組みです。

それを踏まえて下記コード。

“`php

元記事を表示

【Laravel】laravel duskインストール時のエラー解決

# Laravel duskインストール時にエラー発生
公式ドキュメントを見ながらLaravel duskの導入をしていたら、以下のようなエラーが発生しました。
“`plaintext
$ sail artisan dusk:install
Dusk scaffolding installed successfully.
Downloading ChromeDriver binaries…

== 略 ==

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:0A000126:SSL routines::unexpected eof while reading
“`

実行環境は以下の通りです。
– OS : macOS Monterey
– PHP : 8.1.6
– Laravel : 9.19.0
– Laravel Dusk : 6.24.0
– Laravel Sail : 1.0.1

# PHPとOpenSSLとの互換性の問題
調べてみると、[*

元記事を表示

Laravel PHP デバッグ やり方 [検索]

こんにちは。やまゆです。

Laravel や PHP のロジックをデバッグしたい時に使える機能をリストアップしてみました。

IDE と xdebug 等を併用した高度なステップ実行デバッグなどではなく、素朴に出力する系についてまとめています。

## PHP 汎用

### echo

[PHP: echo – Manual](https://www.php.net/manual/ja/function.echo.php)

グローバル関数ではなく言語構造です。

これを書いた場所で標準出力に流れます。引数は文字列のみ可能なので、 array とか入れても Array としか表示されません。

“`php
echo [‘a’];
Warning: Array to string conversion in /in/35K9M on line 3
Array
“`

まあ、あまり使うことはないでしょう。

### print_r()

[PHP: print_r – Manual](https://www.php.net/manual/ja/function.print-r)

元記事を表示

PhpStormでマウスを使わずに矩形選択する方法

## 概要
PhpStormでマウスを使わずにキーボードのみで矩形選択する方法が検索してもあまりヒットしなかったため、備忘録として残す。

## 環境
OS:Windows
PhpStormのバージョン:2022.1.3

## 手順
1. Ctrlを2回押す。
2. 1.でそのままCtrlを押しっぱなしで矢印キーで矩形選択できる。

元記事を表示

Laravel-admin EC2 インストール手順 2022年版

# Laravel-AdminをEC2にインストールする手順 2022年版

### パッケージのインストール

“`
sudo amazon-linux-extras install -y php7.4
sudo yum install -y php-xml
sudo yum install -y php-mbstring
sudo amazon-linux-extras install -y mariadb10.5
sudo yum install httpd httpd-devel
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
“`

### 自動起動設定

“`
# mysql
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo systemctl is-enabled mariadb
sudo mysql_secure_installation

# h

元記事を表示

Laravelのmigrateでcould not find driverが出た時の対処法

環境
・Ubuntu 18.04
・MySQL 5.7
・PHP 7.4
・Laravel 6.7.0

マイグレーションを使うために php artisan migrate:install コマンドを実行したところ、
Illuminate\Database\QueryException : could not find driver の文字が表示された。
どうやら、PHPからMySQLに接続するためのドライバが見つからないらしい。

mysqlのドライバをインストールすために、下記のコマンドを実行した。(Ununtuの場合)
sudo apt install php7.4-mysql

そしてもう一度migrate:installを試したところ、成功した。

元記事を表示

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

元記事を表示

無料でJavaScriptを学べるサイト

# 無料でJavaScriptを学べる「javascripttutorial.net」

プログラミングの学習をしていて出会ったサイトがあります。
それが「**javascrittutorial.net**」というサイトです。

https://www.javascripttutorial.net/

ほとんどの内容が網羅されている海外のサイトになります。

すべて英語表記なので、苦手な方はとっつきずらいかもしれませんが、
このサイトをみながら英語読解にも慣れていこうという勢いでぜひ見てみてください(笑)

ちなみに
– **ES6(ES2015)以降の内容**
– **JS BOM / JS DOM**
– **WEB API**

などなどの内容が載せられています!

# まだまだあった!
JavaScriptだけではなく、他にも言語別でサイトがありました!
どちらも「javascripttutorial.net」の姉妹サイトです。

## Pythonが学べる「pythontutorial.net」

https://www.pythontutorial.net/

## Ty

元記事を表示

【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`に変更することで

元記事を表示

OTHERカテゴリの最新記事