PHP関連のことを調べてみた2020年12月06日

PHP関連のことを調べてみた2020年12月06日

LaravelのBladeテンプレートにCSSやJavascriptを書かない理由はこれかな?

## はじめに
この記事は、私個人の意見を文章にしているだけの記事です。
そのため、コードサンプルや、技術の説明のような情報はありません。
もし、コードサンプルや技術説明をお探しであれば、別の方の記事を参考にしてください。

## Bladeテンプレートでの問題点
以前、次のような記事を書きました。

[LaravelのBladeテンプレートをVue.jsっぽく書いてみた](https://qiita.com/bearrabi0506/items/59789ae4c467104e6161)

この手法だと、部品毎で分割しやすく、コードも見やすくなると思っていたんですよね。
しかし、実際に開発していて大きな問題が1つ発生しました。
それは、__*JavascriptのUnitテストができないことです。*__

## 解決方法の検討

次のように解決方法を検討しました。

#### 1. Javascriptを外部のJSファイルに記述する
これは、Vue.jsやReact等の、フロントエンドのフレームワークを利用しない場合、当たり前の記述方法だと思います。
Laravelでは、Blade

元記事を表示

英語のテックジョークで使えそうなワード

#良さげなワード
arrays(配列)-> a raise(昇給)
bugs(バグ) -> bugs(虫)
dark(IDEなどのダークモード) -> dark(暗闇)
table(DB table) -> table(机)
server(サーバ) -> server(レストラン店員)
cache(キャッシュ) -> cash(現金)
Java(プログラミング言語) -> java(コーヒー)

#今日の名言
I hope my death makes more cents than my life.(私はこの人生よりも硬貨な死を望む)
※ make cents(小金を稼ぐ)とmake sense(意味をなす)をかけている

-アーサー(映画ジョーカーの主人公)

元記事を表示

Symfony で composer install –no-dev が失敗する

業務でSymfonyを利用していますが、先日、運用環境のデプロイでエラーが発生したので、備忘録を兼ねて投稿します。

– Symfony 3.0.1

# 発生したエラー

“`
$ composer install –no-dev

Uncaught exception ‘Symfony\Component\Debug\Exception\FatalErrorException’ with message ‘Error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Fatal error: Class ‘Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle’ not found in …
“`

# 原因

Composer scripts に以下のような記載があり、`copmoser install` 時に `cache:clear` が実行されますが、デフォルトでは `–env dev` で実行されます。

“`json
..

元記事を表示

Xdebug3.xでProfilerを動かす雑な設定

## Profilerを動かす
偶然にも関わっているお仕事で「APIあたりのレスポンスタイムがよろしくない」という事象にぶち当たり「Profilerで確認してくれない?」というリーダーからのお達しが別のメンバーに来たものの「設定をしたことがない」というので私の方でProfilerの設定を調べました。

せっかくなので動作した設定をここに記しておきます。

## 設定
“`ini
xdebug.mode=profile
xdebug.start_with_request=trigger
xdebug.trigger_value=””
“`

簡単に説明します。

### mode
“`ini
xdebug.mode=profile
“`
modeでXdebugの各種動作モードを設定します。

Profilerの場合、時間などを計測しているので、もしかしたら他の機能は削除した方が良いかもしれないです。

### start_with_request
“`ini
xdebug.start_with_request=trigger
“`

`start_with_request`は

元記事を表示

JavaのエンジニアがPHPで開発するときに知ってるといいこと

[Phoneappli Advent Calender 2020](https://qiita.com/advent-calendar/2020/pa_engineers) の6日目
昨日の@teino_ponytailさんの[「HTTP/3ってなに?」](https://qiita.com/teino_ponytail/items/6db84334c23ae9f2549f)を見て、

「あ、Advent Calendarってそういう感じでやるんだ」
と初めて知った、ITリテラシーの低い人です。

仕事でウェブ系開発やるようになって、PHPもやらされるようになりました。
PHPってwebの情報多いし、コピペで簡単に動くものが作れるし、適度に枯れた、
素晴らしい言語だと思います。

「でも、コピペでお金もらうのも仕事としてどうかな」

と思ったりして、言語仕様を調べたこともありました。
その時にJavaエンジニア視点で、PHPのおかしなところとか、
知らんかったことがけっこうあったので、そういうところをまとめました。

まとめたのが2018年なんで、今のPHP7には対応してないかもしれ

元記事を表示

個人開発プロジェクトのLaravelのバージョンを6から8に上げる時にやったこと

# はじめに
個人で開発中のプロジェクトで練習のためLaravelのバージョンを6.2から8にアップデートしたので、その時行った事を公開します。

# 参考サイト
[アップグレードガイド](https://readouble.com/laravel/8.x/ja/upgrade.html)を主に参考にしました。
6から8に上げるため、7の物も参考にしています。

# 依存パッケージ
上記のアップグレードガイドを元に依存パッケージを更新しました。
更新した項目は以下の通りです。
– nunomaduro/collisionを^3.0から^4.1へ
– phpunit/phpunitを^8.0から^9.0
– laravel/frameworkを^6.2から^8.4へ
– facade/ignitionを ^1.4から^2.3.6へ
– laravel/uiを1.0から^3.0へ

# シーダーとファクトリの名前空間
元々database/seedsのディレクトリ名をdatabase/seedersに変更しました。
また、バージョン8からシーダとファクトリに名前空間が追加されたので、see

元記事を表示

最新XHPを使ってみよう

# XHPをたくさん使ってみよう!

2年前のアドベントカレンダーで下記を紹介しました。
[初めてのXHP Tutorial / XHPとReact](https://qiita.com/ytake/items/d62a74d9cdab6baee4f8)

あれから2年、少し進化を遂げ独特なコロンを多用した記述方が通常のクラスの記述方法に近くなり、
今までクラスの名前空間がサポートされていませんでしたが、
ようやくサポートされました。

これまでは名前空間を使うためには `class :foo:bar` と書く必要がありましたが、
今回通常のクラスと同じ記法になりました。

以前のバージョンとの書き方は以下の様に異なります。

## Version3まで

“`hack
class :foo:bar extends :x:element {
category %flow;
children (:div, :code*);

protected function render(): void {
return {$this->getChildren(

元記事を表示

Laravelの中間テーブルでcreated_atとupdated_atがnullの場合の対処

中間テーブルにデータを挿入する際に、created_atやupdated_atが挿入されず、`Field ‘created_at’ doesn’t have a default value`や`Field ‘updated_at’ doesn’t have a default value`が表示される場合の対処です。
![スクリーンショット 2020-12-05 22.21.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483911/3faa529c-5774-0593-2160-54ed7339a5ef.png)

# 動作環境
こちらのDocker環境を使用しています。
最強のLaravel開発環境をDockerを使って構築する【新編集版】

# マイグレーションファイル
“`2020_12_05_000000_create_feed_table.php

元記事を表示

php.logをgit管理から外す方法(PHP初心者)

#はじめに

素のPHPにてWEBアプリを作成中、ソース管理で、php.logを管理から外す方法についてつまづいたので共有します。

##環境
 【開発環境】
  MacOS Catalina 10.15.5
 【言語】
  PHP 7.3.9
 【バージョン管理】
  Git 2.24.3
##手順
① .gitignoreファイル作成
②管理から外したいファイル(php.log)を.gitignoreファイル内に書き込み
③コミット→プッシュ

これで管理から外すことができるというネット情報を見つけ実行。

参考:https://www-creators.com/archives/1662

##しかしながら全く反映されず。
ずっとこの常態。。↓

“`
【ターミナル(git stauts実行時)】
modified: .gitignore
modified: php.log
“`

##キャッシュが削除されていないと反映されない
キャッシュが削除されていないと反映されないらしく。下記を実行。

“`

$ git rm -r –cached php.log

元記事を表示

【初心者向け】コーディングでは積極的にメモにまとめよう(効率化)

#メモにするメリット
急がば回れ、
コードを書く前にしないといけないことを明確にすることで、無駄なコードを書いて混乱せずに済みます。結局そのほうが開発が早く進みます。
また、後にコーディング内容に問題があったときに『自分が何を考えて何をコーディングしたのか』を振り替えることができます。

特にPHPやHTML、JavaScriptなど複数言語を同じ開発で扱うときには、どの部分で何をするかもわかりやすくなるでしょう。

#ToDoリストを書く
コードを書く前にやることをToDoリストにまとめましょう。

コードを書く前に
手順(しないといけないこと)をまとめる。
手順の中での課題になりそうなことをまとめる。
チーム開発では、何を相談すべきか明確する。

コードを書きながら
やったことを都度まとめる。
新たに生まれた『これからやること』をまとめる。

これらをメモすることで、分からなくなったときに今までしていたことを振り返ることができ、
チームメンバーに説明するときにも開発内容を説明しやすくなります。

#初心忘れるべからず
とても基本的なことですが、メモにする

元記事を表示

Sequel Aceを使ってDocker&MySQL環境でデータベース接続に失敗した話

■Qiita投稿用(通常版)
こんにちは、くりぱんです。

## この記事で実現できること
– Docker&MySQL環境でSequel Aceを接続する

## 開発環境
– Sequel Ace
– Dokcer
– MySQL
– Laravel
– PHP

## 説明
Dockerを使用してMySQL環境を構築した人の中で、正攻法で「Sequel Ace」に接続できなかった人が、この記事読むことで「Sequel Ace」を使用してMySQLをGUIで操作できるようにできるようになります。

## 実装の流れ
1. docker-compose.ymlの編集
1. docker-compose up -d
1. Sequel Aceの設定

## 実装
### docker-compose.ymlの編集
正攻法で「Sequel Ace」に接続できなかった場合、ポート番号が悪さをしている可能性大です。
なので、docker-compose.ymlを編集して、ポート番号の変更をしていきます。

“`yml:docker-compose.yml
version: “3”
serv

元記事を表示

よくある掲示板を1から積み上げて作る〜導入〜

## 本記事の概要

掲示板の作成を通して
MVC について学びたいという初心者が
[github.com/sait0928/bbs](https://github.com/sait0928/bbs)
↑このリポジトリについて
初期のコミットから段階を追って振り返りつつ、
記事を作成することで復習し
理解を深めたい、
ということで作成した記事でございます。
複数に分けて投稿していく予定です。

## 筆者はどのくらいのレベルなのかという話

– プログラマのアルバイトを半年ほど経験
– うち研修3ヶ月、実務は3ヶ月ほど
– 退社してから1年ほどブランクあり
– PHP, DB, 仮想マシンは使ったことがある
– HTML は最低限書ける
– レベルはおそらく底辺

## 環境構築で参考にした記事・サイト

### 仮想マシンの準備

– [【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!](https://kitsune.blog/linux-environment)
– [CentOS 7にPHP 7.4をインストール(Remi’s R

元記事を表示

【PHP】メッセージ機能実装

学習内容を備忘録としてまとめます。
メッセージ機能を実装しましたので、作成方法を記載します。
![message.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/a10721d7-22e1-24e4-d53f-d3cd98df286e.gif)

ユーザー同士でメッセージ機能を用いてやり取りすることができます。

#実装方法
実装方法について記載していきます。

##テーブル構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/baaf7044-f5f8-e8e7-4cc8-6c1b80f33e12.png)
`messaegeテーブル`と`message_relationテーブル`の2つを作成します。
各カラムは下記のような役割を担っています。

| カラム名 | 役割 |
|:-:|:-:|
|id| メッセージID |
| text | メッセージ内容 |
| im

元記事を表示

レガシーコードの無法地帯にテスト文化を築いていく道のり

Adventカレンダー5日目の記事です。

## レガシーコードが存在するプロジェクトの出来事

>わい「このシステム出来ましたで!確認オネシャス!」
リーダー「お! 早いやんけ!どれどれ…….なんやこれは」
わい「何ってご所望のシステムですやん」
リーダー「テストはどこやねん」
わい「テストもちゃんとやってますわ!ここのExcelにあるやろ!」
リーダー「これはテストとは言わんのや」
わい「なんやて?」

これがレガシーコードの無法地帯におけるテスト導入との始まり。

前提として、コーディングが終わった時点でテストというのは必須です。(何を当たり前のことを言うてるんや)
当たり前ですがテストをしないとバグを含んでいるのか、そもそもちゃんと動くのかという保証が全く分かりません。

>「テストしてあるよ!」
>「ちゃんと動いてるじゃん!」

これでは保証にはなりません。個人のチェックというだけで証拠となりません。
それが仕事をサボりたいだけの嘘だったら?
**テストが実行された/されているという証拠**が絶対に必要なのです。
それは決してExcelなどで管理されるもので

元記事を表示

CarbonのaddSecondsとaddRealSecondsの違い

CarbonのaddSecondsとaddRealSecondsの違い

・addSecondsはミリ秒も保持されたまま秒数が追加される。
・addRealSecondsはミリ秒が削除されて秒数が追加される。

addRealSecondsはタイムスタンプベースの追加になる。タイムスタンプは秒単位なのでミリ秒は消える。

“`.sh
>>> $b = now(‘Asia/tokyo’)
=> Illuminate\Support\Carbon @1607132885 {#4267
date: 2020-12-05 10:48:05.334754 Asia/tokyo (+09:00),
}
>>> $c = $b->copy()
=> Illuminate\Support\Carbon @1607132885 {#4265
date: 2020-12-05 10:48:05.334754 Asia/tokyo (+09:00),
}
>>> $b->addSeconds(10)
=> Illuminate\Support\Carbon @1607132

元記事を表示

LaravelでShopifyアプリを開発する方法

# はじめに
Laravelを使ってShopifyアプリを作成してみたので、Laravelインストール〜ショップ管理画面でアプリとして表示するまでをご紹介します。

## 動作環境
Mac OS Catalina
PHP 7.3.24
Laravel Framework 8.17.2

## Laravel インストール
“`shell
$ composer create-project laravel/laravel –prefer-dist sample-app
“`

## PHP Shopify SDK インストール
Shopifyフォーラムでおすすめされていた[php-shopify](https://github.com/phpclassic/php-shopify)を選定しました。
全て確認はできていませんが、ほとんどのShopifyAPIを網羅していると思われます。

“`shell
$ cd sample-app/
$ composer require phpclassic/php-shopify
“`

## 認証URL作成
### コントローラ作成

元記事を表示

※学習用メモ デザインパターン:Facade編[PHP]

# Facadeパターンとはどういうものか

Facadeとは**建物の正面**という意味です。
このパターンは異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的としています。(wikipediaより)

クラスやメソッドが多い際、どれを使えばよいか迷ったり、呼び出し順に注意する必要が生じます。
その際にFacadeパターンを用いることで、使用する側はその詳細を知る必要が無くなるので、シンプルな形で利用することができます。

[参考サイト]
https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
https://qiita.com/i-tanaka730/items/911604bcd4136684ff1c
https://www.techscore.com/tech/DesignPattern/Facade.html/

# Facadeパターンを用いるメリット

・処理の窓口を少なくすることで、複雑なものを単純に見せることができる

元記事を表示

Laravel5.5 Eloquentモデルでupdated_atカラムがないテーブルを使うとき

Laravelの便利な機能“Eloquent“を使う際に、使い勝手が言い分困った!っと感じたこととその対応。

テーブルにupdated_atカラムが必要ない時ってありますよね。
updated_atがないテーブルにEloquentを使って、DBに新規登録するとエラーが出ます!

カラムがないよ!ってアラートです。
しかし!!出てきても大丈夫!

“`モデル
const UPDATED_AT = null;
“`
これを、新規登録するテーブルのモデルにかけばOKです〜!

以上になります!
今回、updated_atに少し翻弄されてしまったので備忘録として書きました。
LGTM大好物なんで、ポチッと投げ銭感覚でおねがいします〜! :sunglasses:

元記事を表示

Hackのルーターを触ってみよう

# Hack-Router

今回は、[Hack-Router](https://github.com/hhvm/hack-router)を使って、
簡単にHTTPに関する処理を実装してみましょう。

Hackはライブラリが多くなく(むしろ少ない)、
ルーターはこのライブラリくらいしかありません。
ライブラリを作りたい方はすでにあるHackのライブラリを触って、
コードを読んでから作ってみると良いでしょう。
今回はそんな定番とも言えるルーターライブラリを触ります。

PHPと異なり、Generics、Enumsを利用していますので、
PHPしか利用していない方は少しばかり難しいですが、
大したことはありません。

## 開発環境の用意

手元にHHVMなんてないよ!という方は、
[HHVM(proxygen) 環境を構築してみよう](https://qiita.com/ytake/items/37319c68512aebf745b1)にありますので、
事前に準備しておきましょう。

## インストール

まずは前日の[[2020] HHVM/Hackの始め方 導入編](https://

元記事を表示

PHPでファイルをダウンロードする【作成中】

[PHPでファイルをダウンロードする方法とよくあるエラー](https://www.flatflag.nir87.com/force-download-833)
[PHPでファイルを開いて読み込む](https://qiita.com/tadsan/items/bbc23ee596d55159f044)

元記事を表示

OTHERカテゴリの最新記事