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

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

RubyとPHPの比較(メソッド、引数、戻り値)

# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。

これらの記事の続きです。

https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a

# メソッド
“`メソッド(関数)“`とは***何の処理をしているかをわかりやすくまとめた、かたまりのこと***です。
***Ruby***なら“`def“`、***PHP***なら“`function“`で定義します。
それぞれコードを見ていきます。

⚫︎“`Ruby“`
“`rb
def language(lang)
puts “#{lang}を勉強したい”
puts “#{lang}が話せます。”
end

#メソッドの呼び出し
language(“英語”)
language(“中国語”)

#英語を勉強したい
#英語が話せます。

元記事を表示

【Laravelエラー】Add [ ] to fillable property to allow mass assignment on

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況

Articleをcreateするとき下記のエラー

“`
Add [‘title’] to fillable property to allow mass assignment on
“`

“`app/Models/Article.php
class Article extends Model
{
use HasFactory;

public function comments()
{
return $this->hasMany(Comment::class);
}

public function user()
{
return $this->belongsTo(User::class, ‘user_id’);
}

public function likes()
{
return $this->hasMany(Like::class);
}
}
“`

## 原因

modelに“`protected $fillable“`を定義してないから。

>

元記事を表示

【Dockerエラー】RUN apt-get update && apt-get install

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況

ドキュメントのやり方(「macOSではじめる」)に沿って環境構築していた際、下記のエラー。

https://readouble.com/laravel/9.x/ja/installation.html

“`
% .vendor/bin/sail up

Building laravel.test
[+] Building 98.4s (9/16)
=> [internal] load build definition from Dockerfile

元記事を表示

【Laravel】Class “App\モデル名” not found

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況

コントローラーにAricleモデルを宣言した際のエラー
“`
Class “App\Article” not found
“`

“`app/Http/Controllers/HomeController.php

use App\Article;

class HomeController extends Controller
{

}
“`

## 解決方法

ちゃんとディレクトリ通りに参照する。
古いバージョンの記事を参考にしていたため、自分のバージョンに合った記事を参考にする。

“`app/Http/Controllers/HomeController.php

use App\Models\Article;

class HomeController extends Controller
{

}
“`

いちいちモデル宣言しなきゃいけないの面倒だな…

元記事を表示

【Laravel】Dockerでテスト用のDBを作成する方法

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## やり方

テスト用のDBを作成するために“`docker-compose.yml“`に追記。

テスト用のDBを環境変数にしない理由は、Dockerを立ち上げたときに**おそらく**“`.env“`は読み込んでいるが“`.env.testing“`はテストを実行したときに読み込んでいるため、ここで環境変数にしても意味がないから。
環境変数にした場合、テストがうまく行かなかった。

“`docker-compose.yml
mysql: &mysql
image: ‘mysql/mysql-server:8.0’
ports:
– ‘${FORWARD_DB_PORT:-3306}:3306’
environment:
MYSQL_ROOT_PASSWORD: ‘${DB_PASSWORD}’
MYSQL_ROOT_HOST: “%”
MYSQL_D

元記事を表示

Docker Desktop for mac 4.6 がリリースされて、ファイルIOのパフォーマンスが向上したらしいので調べてみた。

# Docker Desktop for mac 4.6のアップデート内容

https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac

今回のアップデートでは、 **`virtioFs`** と呼ばれるファイル共有実装を使用するオプションを利用できるようになったみたいです。
これにより macOS ホストと DockerVM 間でファイルを同期する方法が改善され、パフォーマンスが向上したらしい。

### 「virtioFs」を使用する際の前提条件
– macOS 12.2以降 (Apple Siliconの場合)
– macOS 12.3以降 (Intelの場合)

# 「virtioFs」を有効にする

###

– まずは Docker Desktop for mac を v4.6 にアップグレードする。([こちら](https://docs.docker.com/desktop/mac/release-notes)からもアップグレード可能です)
– 「

元記事を表示

RubyとPHPの比較(条件分岐、配列、ハッシュ)

# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。

こちらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c

# 比較
演算子などを使った比較の方法をみていきます。

### PHPで値を調べる

“`var_dump“`を使うと値の解析ができます。
“`php
var_dump(10);
var_dump(“10”);

//int(10)
//string(2) “10” と出力
“`
initは“`数値“`のことで、stringは“`文字列“`のことです。
stringの後の(2)は***文字数***のことです。

### 条件式
数値などを比較をする時には使う***条件式***をRubyとPHPで比較しながら見ていきます。
“`==“`は比較したものが等しいかをチェックします。

⚫︎“`Ruby“`

“`rb
puts 100 == 100
puts 100 ==

元記事を表示

phpで文字列からunixtimeに変換する

## 対応方法
`strtotime()`でOK

“`php
$date = “2022-3-24 13:42:20”;
$unixtime = strtotime($date);
echo $unixtime;
// (int)1648096969
“`

https://www.php.net/manual/ja/function.strtotime.php

元記事を表示

[PHP/Laravel]stdClassをArray(配列)に変換する

## 問題
“` :stdClass配列
array(1) {
[0]=>
object(stdClass)#302 (1) {
[“id”]=>
int(1)
}
}
“`
これを

“` :通常配列
array(1) {
[0]=>
array(1) {
[“id”]=>
int(1)
}
}
“`
こうしたい

## 対応方法

“` php:
$array = json_decode(json_encode($stdClassArray), true);
“`
これでOK

元記事を表示

[PHP/Laravel]Cannot use object of type stdClass as arrayが出る場合

## エラー内容
“`
Error
Cannot use object of type stdClass as array
“`

## 対応方法

配列(array)ではなくstdClassになっているのでこうする
“` php:エラー出る
$array[“data”];
“`

“` php:エラー解消
$array->data;
“`

元記事を表示

php のバージョンが混在する環境で特定バージョンのphp-fpmを使用する Homestead 編

Docker 優勢の現代に、ローカル環境で Homestead を使用している人は少ないかもしれませんが、メモです。

## 環境(前提)
Homestead で php7 .2の環境を構築し、Laravel6 系を動かしていました

## 起こったエラー
ある日突然、下記エラーを吐いてWebページが502で開けなくなりました。
“`
[crit] 861#861: *2 connect() to unix:/var/run/php/php7.2-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.10.1, server: hoge.local, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php7.2-fpm.sock:”, host: “hoge.local”
“`

### 原因
エラーにある通り `/var/run/php/` の配下を見てみると以下の通

元記事を表示

vue3とlaravel8でリアルタイムチャット機能を実装

## はじめに
今回は、Pusherを使ったリアルタイムチャット機能を実装していきます!!

この記事の目標は、ブラウザを2つ開いて片方からチャットを送るとリロードしなくても自動更新される簡単なリアルタイムチャット機能を目指します!

#### 実行環境
Vue : 3.0.5
Laravel : 8.63.0
## まず簡単なチャット機能を作る(リアルタイムではない)
今回の本題は、リアルタイムということなのでここはサクッと進みたいと思います。
#### テーブルとモデルの作成
まずチャットのメッセージを保存するためのテーブルを作ります。
“`c#:コマンド
php artisan make:model Message
php artisan make:migration create_messages_table –create=messages
“`
“`c#:src/database/migrations/2022_03_00_000000_create_messages_table.php
public function up()
{
Schema::crea

元記事を表示

外部ファイル関連(出力、読込、追記)

●外部ファイルへの書き込み
`file_put_contents(‘パス/出力ファイル名’, ‘出力内容’)`を用いる。
例)
“`

元記事を表示

PHP 配列の要素をランダムに並び替える関数 shuffle

# 概要

– 既存の配列を渡すと配列内部の要素をランダムに並び替えてくれる関数`shuffle()`についてまとめる。

# 紹介

– 下記の様に実行する。

“`php
$array = [‘りんご’, ‘いちご’, ‘バナナ’];
shuffle($array);
“`

– 下記の様に配列の内部要素をランダムに並び替える。

“`php
var_dump($array);
// 筆者が実行したときは[‘バナナ’, ‘いちご’, ‘りんご’]に並び替えされた
“`

– 当該関数に引数として渡す配列そのものの要素を入れ替える(難しい言い方をすると「参照渡し」でもともとの配列に影響を与える)ので注意する。
– 成功したらtrue、失敗したらfalseを返す。

# 参考文献

– [https://www.php.net/manual/ja/function.shuffle.php](https://www.php.net/manual/ja/function.shuffle.php)

元記事を表示

Laravel ブラウザからログイン済みのユーザーが実行できるAPIの作成と確認

# 概要

– Laravelのアプリケーションにてブラウザからログインしているユーザーが実行できるAPIを作成する方法をまとめる。

# ご注意

– 本知見は同じチームで働くエンジニアさんにご教授いただいた内容です。
– 筆者がかなり詰まっていたときにお力添えいただきました!改めてお礼申し上げます!
– 今回、詰まりそうな作業を極力少なくするためにAPIで実行されるルーティングをweb.phpに記載します。
– 本来、APIのルーティングはapi.phpに記載することが望ましいです。
– 今回web.phpで定義している処理はあくまで「ROOT GET OK」の文字列を返すだけのものですが、応用すればいろいろな処理が可能です。

# 作成

1. Laravelの新規アプリケーションを作成する。
1. 下記の方法でLaravel Breezeを用いた認証処理を作成する。
– [https://readouble.com/laravel/9.x/ja/starter-kits.html](https://readouble.com/laravel/9.x/ja

元記事を表示

Symfonyプロジェクトをherokuにデプロイする。

## モチベーション
[The Fast Track – 基礎から最速で学ぶ Symfony 入門](https://symfony.com/doc/6.0/the-fast-track/ja/index.html)でSymfonyの勉強中、作業内容をデプロイする説がありました。
その際、[Platform.sh](https://platform.sh/)にデプロイするとありましたが、情報量が少ない上に、私の勉強不足により上手く行うことが出来ませんでした。
![スクリーンショット 2022-03-23 18.24.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759541/1c7df075-e599-d1ae-6034-07f902ff8f51.png)

ですので、比較的情報も多く、日本語ドキュメントが豊富なHerokuにデプロイすることにしました。

## 環境
Symfony6系
“`json
“php”: “>=8.0.2”
“`

## 行ったこと

まずプロジェクトを作成し

元記事を表示

【PHP】タグ機能②

下記投稿の続きで、タグ機能に文字かタグの数で改行するように制御を追加します。

https://qiita.com/ryouya3948/items/da1a53e32edbd16637a5

![tag9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/d6c94a3f-cb7e-18ce-7e87-e164daead6da.gif)
# タグか文字の数で改行
“`php:form.php
function inputChange() {

spans = skill.getElementsByTagName(“span”),
skills = new Array();

for (i = 0; i < spans.length; i++) { skills[i] = spans[i].textContent; } skills = skills.join(''); if (3 <= spans.len

元記事を表示

Laravelでニコニコ動画 『スナップショット検索API v2』を利用してみた

# はじめに
Laravelを学び始めたばかりの筆者が、自身のアプリにニコニコ動画のコンテンツ検索機能を実装した際のメモです。Qiitaの記事は初めて書きました。何かミスを含んでいる可能性は十分ありますので、あらかじめご了承ください。

# 『スナップショット検索API v2』について

ニコニコ動画のコンテンツを検索/取得できる公式APIです。

使い方は公式ドキュメントにわかりやすく説明してありますので、大半の方はこの記事で無く公式ドキュメントを読んだ方が速いと思います。

https://site.nicovideo.jp/search-api-docs/snapshot

# ControllerでcURLを使って情報を取得

Controller内で必要なパラメータを指定しcURLでGETを行います。今回は、ユーザから検索対象文字の”q”と何ページ目を取得するかを示す”page”を受け取り、APIのパラメータを指定する際に用いています。

“`php:MyPageController.php

元記事を表示

WordPressでログを取る場合に気を付けること

Web制作会社のエムハンドでエンジニアをしてる@yadon_yadon_yadon_don_donです:raised_hand:
WordPressサイトの制作をする際、
いわゆるシステムチックな構築が必要になる場合、
システムの検証や、システムが動いていることの証拠を残すために、
エラーログを出力させています。

その実装方法、注意することをまとめます:point_up:

## 実装方法
### wp_config.php
下記を、
“`
define( ‘WP_DEBUG’, false);
“`
下記に書き換えます。
「保存したいパス」に関しては、**ドキュメントルートより1つ以上上の階層にディレクトリを作成**、そこを設定することを推奨します。(理由は後述)
“`
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
define( ‘WP_DEBUG_LOG’, ‘保存したいパス’.date(‘Ymd’).’_debug.log’ );
“`
この書き換えが完了したら、エラーや警告がデバッグ

元記事を表示

【Laravel】初期設定について

## この記事に書いてあること
Laravelプロジェクトを立ち上げた直後の初期設定について、最低限必要なものを紹介します。
プロジェクトに応じて、他にも必要があれば設定してください。

## タイムゾーン、言語設定
タイムゾーンと言語設定を日本にします。
config/app.phpを以下のように変更。

“`php:config/app.php

// ‘timezone’ => ‘UTC’,
‘timezone’ => ‘Asia/Tokyo’,

//中略

// ‘locale’ => ‘en’,
‘locale’ => ‘ja’,
“`

## デバッグバー
クエリ実行ログ、ルーティング、ビュー、セッション等の様々な情報をデバッグバーとして出力してくれます。

githubは[こちら](https://github.com/barryvdh/laravel-debugbar)

以下のコマンドでインストール。
vagrantにssh接続して、仮想環境上で実行します。

“`
composer require barryvdh/laravel-debugbar
“`

元記事を表示

OTHERカテゴリの最新記事