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

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

Laravel 制約を設定したら name is too longのエラーが出た

# 概要

– laravelのマイグレーションファイルの記載で制約を設定したら「name is too long」のエラーが出てマイグレーションができなかったので解決方法をメモ的にまとめる。

# エラー内容

– エラー内容を下記に記載する。

“`
Syntax error or access violation: 1059 Identifier name ‘XXXX_YYYY’ is too long
“`

– laravelは制約の名前をテーブル名を用いて自動生成している。
– テーブル名が長すぎると制約名が長くなりすぎる。そのためエラーが出ていた。

# 解決方法

– 下記のように制約設定時にメソッドチェーンでnameを指定する。

“`PHP
$table->foreign(‘XXXX_id’)->references(‘id’)->on(‘XXXXs’)->name(‘hoge_fuga_piyo_id’);
“`

元記事を表示

PHPの基礎1

## はじめに

こんにちは。
私は現在未経験の駆け出しエンジニアとして様々な学習をしています。
先日PHPの基礎文法について学んだので、自分のアウトプットように記事を残します。
初めての投稿になりますので至らない点がありましたら申し訳ございません。

## 基本記述

“`PHP:lesson.php

“`

“`:出力結果
hallo world
good morning!
“`
PHP_EOLはPHPの定義済み定数であり、OSに応じて自動的に改行文字を設定してくれる。

## nowdoc(ナウドキュメント)とheredoc(ヒアドキュメント)

“`PHP:lesson.php

元記事を表示

Laravel Breezeを使ってみる

開発環境は、
– Windows10 Pro(64bit)
– PHP 8.1.7 (cli) (built: Jun 7 2022 21:45:53) (ZTS Visual C++ 2019 x64)
– Composer version 2.3.7 2022-06-06 16:43:28
– PostgreSQL 14
– node v14.17.5
– npm 6.14.14
– Laravel 9.21.4
– VITE v3.0.2

Cドライブ直下に、laravelディレクトリを作成し、カレントディレクトリへ
“`
cd c:\ && mkdir laravel && cd laravel
“`

以下のコマンドを入力し、Laravelのプロジェクトを作成します
“`
composer create-project laravel/laravel first_breeze –prefer-dist
“`

インストールが終わったら、first_breezeディレクトリをカレントディレクトリにします。
“`
cd first_breeze
“`

Pos

元記事を表示

PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (4)

PLCからゲートウェイでデータを取得し、データベースにJSONで保存します。複数回に分けて、サンプルを用いて解説します。
初回から前回にかけては、ゲートウェイを使って、PLCから取得したデータをMQTTでブローカーに送信するまでを実装しました。

[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (1)](https://qiita.com/COOLMAGICPRODU1/items/31513295943763365915)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (2)](https://qiita.com/COOLMAGICPRODU1/items/370b1bd37dca8a4fd9ae)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (3)](https://qiita.com/COOLMAGICPRODU1/items/08891c828736428c1b5c)

今回はデータベースを準備します。
![348f9673721149a9206023ad2b3ca8e062d7eb7ab1449.png]

元記事を表示

TOKYO FMのjet streamをphpで録音したい。

## 初めに
私は、ある時から東京FMで深夜12:00〜1:00で放送されるジェットストリームというラジオ番組にハマってしまい、毎日聞くことがことが日課になっています。
そこで、どんな音楽が今日流れていたのか、などを昼に確認したかったので、phpで東京FMを録音するスクリプトを作ってみました。
**注意!・このスクリプトはradikoのシステムにアクセスをします。ddos攻撃的なことになりかねませんので、最低1分間、実行間隔を空けてください。**

## 欲しい機能

– ラジオを録音する
– できれば東京FM以外も録音できるように。

## 案1・受信
ラジオを受信することを考えてみはしたのですが、さすがに無理だと思い、断念。

## 案2・php以外で?(ラズパイとか)
予算の関係で、断念。

## 案3・HLSを受信するか・・・
これはいけそうな気がする。やってみよう。

### どこで配信しているのか探してみる。
まずは東京FMのホームページを開いてみます。
するとメニューに「ポッドキャスト」という項目がある。
「使えるかも?」と思って、みてみたけどjet streamはな

元記事を表示

【PHP】PHPで
を最後に出力しない方法

# コード
“`PHP
‘ナルト’,’seino_2′ => ‘サスケ’,’seino_3′ => ‘シカマル’,’seino_4′ => ‘イルカ先生’];
$seino = [‘seino_1′,’seino_2′,’seino_3′,’seino_4’];
$seino_list = ”;
foreach($seino as $value){
if($bomb[$value]){
if($seino_list) $seino_list .= ‘
‘;
$seino_list .= htmlspecialchars($bomb[$value]);
};
}
echo $seino_list;
“`

# 結果
“`
ナルト
サスケ
シカマル
イルカ先生
“`

元記事を表示

PHP で、コメントが原因でエラーになった話

正確には、PHP の1行コメントに落とし穴があった、という話です。

【環境】
> (このエラー自体は、環境依存ではないと思いますが、一応あげておきます。)
> OS:Windows 10
> サーバー:Xampp 8.1.6 (Apache 2.4, PHP 8.1.6)
> ブラウザ:Firefox 102.0.1 (64 ビット)
> エディタ:さくらエディタ v2.4.1.2849 32bit (tag v2.4.1)

## 現象1
PHP で、アトミック正規表現 `(?>…)` を修正する時、オリジナルを残しておこうと頭に`#`をつけ(1行コメントアウト)たら、原因特定困難なエラーが生じました。(この現象は、 `//` の場合も同様に発生します。)

:::note warn
なお、このエラーが「原因特定困難」なのは「エディタ環境」に原因があります。エディタが「1行コメントの中断」を正確に認識・色分け表示できる設定であれば、即対処可能でした。
この記事は、そのエディタ環境に焦点を当てたものです。
:::

## エラーメッセージ1
“`PHP
Warning:

元記事を表示

アニメの放送通知を送信するアプリをSPAで作成しました

# はじめに
+ エンジニア転職のためポートフォリオを作成
+ アニメの放送日に通知を送るリマインダーアプリを作成

PHPの学習を一通り終えてLaravelでアプリを1つ作って「SPAってどうやるの?」、「スクレイピングって何?」という状態から初めて触る技術を学習しながら3ヶ月で作成した完全SPAポートフォリオです。

アプリとしてはまだ修正点はあるので、これから継続してブラッシュアップしていきたいと思います。

# 自己紹介
+ 社会人6年目の28歳
+ 現在は医療関連サービス業に従事してます
# 開発背景とアプリ概要
### 開発背景
転職用のポートフォリオなのですが、せっかくなら**誰かの課題を解決するもの・人に使ってもらえるようなサービス**にしたいと思い友人にヒアリングをしてポートフォリオのテーマを以下のように決定しました。

1. 誰の課題を解決するのか
大学時代のアニメ好きの友人

2. どんな課題を解決するのか
アニメの放送日を忘れて見逃してしまう
地域ごとに放送時間が違うため自分の地域にあった通知が欲しい

3. どうやって解決するのか
アニメの放送日当日に通知を送

元記事を表示

【EC-CUBE4系】mailcatcherの設定方法

# 現象
EC-CUBEのローカル環境でメールを使ったテストを行う際に重宝するmailcatcherですが、なぜか公式のとおりに設定してもうまくいきませんでした…

開発環境はもちろんDockerでコンテナも作成、立上げ済み。なのに使えない!
docoker-compose.ymlには以下のように記載。
“`docker-compose.yml
version: ‘3’

services:
mailcatcher:
image: schickling/mailcatcher
ports:
– “1080:1080”
– “1025:1025”
“`

.envも公式のいう通り以下のように記載。

“`.env
MAILER_URL=smtp://127.0.0.1:1025
“`

これでhttp://127.0.0.1:1080/ にアクセスするが
EC-CUBEからメールを飛ばしているのに何も出ない!

![スクリーンショット 2022-07-22 120533.pn

元記事を表示

All-in-One WP Migrationで1G以上のサイトをインポートする方法

1G以下であればphp.iniか.htaccessを編集し、サイトの最大アップロードサイズを変更すれば可能です。ただ1G以上になるとphp.iniなどで最大アップロードサイズを引き上げてもインポートの途中で止まってしまいエラーになります。そういった場合に使用する方法です。

All-in-One WP Migration ver6.68を使用します。
まずはこちらからver6.68のプラグインをインストールします。
→ https://drive.google.com/drive/folders/1XamXIzpAnhuqYSSeKDSwpcM7QdcXoTaI?usp=sharing

インストールが完了したら、
管理画面>ツール>プラグインエディターからAll-in-One WP Migrationを選択し、contants.phpを開きます。
ファイル内で”Max”と検索をかけて、以下のコードを見つけてください。

~~~ php
// =================
// = Max File Size =
// =================
define( ‘AI1

元記事を表示

webエンジニア界隈で使われる各言語のテンプレートリテラル比較してみた

# はじめに

昨日書いた記事でもしれっと使ってるんですが、固定の文字列+連番みたいなことをやるときに、普通に文字列連結してもいいのですが見づらいし直感的ではないので、テンプレートリテラル(テンプレート構文)というものを使って、文字列に直接変数をぶっこんでしまう、というやり方を日常的にやるんじゃないかと思います。

昨日書いた記事はこちら

https://qiita.com/layzy_glp/items/7f3e43af11858eff622d

というわけで、昨日書いた記事の順番で各言語のテンプレートリテラルを紹介していきたいと思います。

※追記
後から知りましたが、大概の言語で日本語の呼び方はブレるけど英語では `String interpolation` と呼ばれている機能なんだそうですね。

# Ruby

“`ruby:例
v = “hoge”
print “hoge#{v}” # hogehoge
“`

ダブルクォートで囲われている中の `#{v}` のところですね。変数名を `#{変数名}` ってな感じで囲むやり方です。
割と古く(v1系)からのrubyでは当

元記事を表示

isNaNはTRUEじゃないの?

## 今回記事を記述した背景
☆isNaNを書いてつまづいた人へ。
暇だったのである問題を解いていました。
問題の内容は
入力した引数が
*数字だったら5枚する
*数字ではなければ”ERROR”という文字を返す
という簡単な問題を作っていました。
## 記入したコード
“`Python
function num(input){
if(isNaN(input)){
console.log(input * 5)
}else{
console.log(‘error’)
}
}

num(3);
“`
*numの中身が数字だったら→numを5倍するなので、3を入れたら15になるかとおもいきや、、errorになってしもーた。
### isNaN(input)は、数字かどうか判断するものだと思っていました。。

## 原因

### isNaN() 関数の性格な意味は引数が NaN (非数) かどうかを判定します。
つまり、
非数NaNであればTrue
そうでなければFalse
## 修正
“`Python
function num(input){
if(!isN

元記事を表示

超初歩的なミス 論理演算子 (否定または否定)条件で無駄な時間を過ごす

論理演算子を用い、ある配列から特定の2つ以上の要素を除いて表示させようとし、 (否定または否定)条件を設定してしまったせいでうまくいかず。

一応メモ。

“`
//配列例
$types = Array(‘A’=>apple, ‘B’=>banana, ‘C’=>cappuccino, ‘D’=>dorian);
“`

“`
//間違い
foreach($types as $type => $key){
if($type != ‘A’ || $type != ‘B’){
echo $type;
}
}
//結果
全て表示される
“`

“`
//単純に書くと
foreach($types as $type => $key){
if($type != ‘A’){
  if($type != ‘B’){
echo $type;
  }
}
}
//結果
A,Bを除いて表示される
“`

元記事を表示

Symfonyのコントローラにおけるパラメータ取りだし

# Symfonyのコントローラにおけるパラメータ取りだし

## Symfony\Component\HttpFoundation\Request のプロパティ
| アクセス | class | 説明 |
| — | — | — |
| ->query | ParameterBag | URLのクエリパラメータ |
| ->request | ParameterBag | POSTのリクエストパラメータ |
| ->attributes | ParameterBag | Routeアノテーションで定義したパスパラメータ |

## Symfony\Component\HttpFoundation\Request のメソッド
| アクセス | 型 | 説明 |
| — | — | — |
| ->get(‘name’) | string | 値 |

## ParameterBag で使用可能な取りだし方法
| アクセス | 型 | 内容 |
| — | — | — |
| ->all() | KV array | すべてのパラメータ |
| ->has(‘name’

元記事を表示

VScode PHP/Laravel デバッガーを導入する

# 概要

– 「Xdebug」の導入方法をまとめる。なお、VScodeでの使用を考慮して導入する。

# 詳細

– 筆者のPCはMacである。
– Homebrewが導入され、使える状態になっている。
– MacのローカルにHomebrewを用いてPHPがインストールされている。

# 方法

1. Xdebugのインストール
1. 下記コマンドを実行してXdebugをインストールする。

“`shell
pecl install xdebug
“`

1. 「Build process completed successfully」と表示されたことを確認する。こちらが出力されれば正常にインストールされている。
1. ターミナルに出力されているインストールログの最後から3行目に表示されている「Installing」の後に記載されているパスをメモする。筆者の出力例を下記に記載する。↓筆者の場合

“`
Installing ‘/opt/homebrew/Cellar/php/

元記事を表示

【Laravelの環境構築】プロジェクト(Laravel用)を作成しようとコマンドを実行したら作成出来ず…

## はじめに
以前、Laravelの環境構築に失敗し若干トラウマのようになっていたのですが(笑)
今回改めてチャレンジし、無事に完了することが出来ました!
全く同じ事象のエラーにぶつかる事は少ないかもしれないですが、
これから「Laravelを使って開発を進めていきたい」という方に向けて
少しでも参考になればと思います。

### 【 構築前の環境 】
・ OS : macOS Monterey バージョン12.4
・ PHP : 7.4.30

### 【 構築後の環境 】
・ OS : macOS Monterey バージョン12.4
・ PHP : 8.1.8
・ Laravel : 9.21.0

### 【 前提条件 : 必須項目 】
#### ・ MAMPのインストール
https://www.mamp.info/en/downloads/
まだインストールされていないという方は、まずこちらの対応からお願いします。
こちらは簡単に言うと、ローカル環境で開発をする上で必要なサーバ(WEBサーバやDBサーバ等)
の役割をまとめて担ってくれるようなソフトウェアです。
不安な方は

元記事を表示

HTMLが動く仕組み

プログラミング学習を本格的に初めて1日目。
以下表題の問いについて分かったので、残しておきます。

# どうしてブラウザ上でHTMLが動作するのか
結論、ブラウザには言語ソフト(解析エンジン)なるものが備わっており、
そいつがHTMLを解釈してブラウザに表示できたわけらしい。

素朴な疑問だったけどわかってよかった。

元記事を表示

ターミナルのインタープリターを使って文字列+連番を出したい!

# はじめに
仕事してて
“`
hoge430,hoge431,hoge432,hoge433,hoge434,hoge435,hoge436,hoge437,hoge438,
“`
みたいな文字列+連番みたいなのをぴゃぴゃっと出したいなーって思ったんですよ。使う用事があったんで。
で、こういうのってターミナルの各言語のインタープリターを使うとやれるんですけど、どうやったっけなー、と思いまして。
備忘録的な感じで。

# Ruby

まずはRubyです。Rubyがこういうの一番簡単に行けたイメージあったので。

“`bash
$ ruby -e ‘(430..438).each{|i|print “hoge#{i.to_s},”}’
“`

簡潔でいいですね。

ちなみにfor文使うとこうです。結局コレでも内部的には`each`が動いているんだそうです。

“`bash
$ ruby -e ‘for i in 430..438 do print “hoge#{i.to_s},” end’
“`

@scivola さんからコメントで頂いたのですがこんな書き方もあるとのことで

元記事を表示

PHP match式

# 概要

– PHPのmatch式について簡単にまとめる

# match式

– switch文の上位互換的な存在

“`
match 式の比較は、 switch 文が行う弱い比較ではなく、 厳密に値を比較(===) します。
match 式は値を返します。
match 式の分岐は、 switch 文のように後の分岐に抜けたりはしません。
match 式は、全ての場合を網羅していなければいけません。
“`

– PHP8以降で利用可能
– `;`で終わらせる必要あり(これは「matchだから`;`で終わらせる必要がある」訳ではない。「matchは式である。式は;で終わらせる必要がある」ということ)

# 使い方

“`php
match (評価したい変数) {
評価したい変数の値A => 評価したい変数が評価したい変数の値Aだった時の処理,
評価したい変数の値B => 評価したい変数が評価したい変数の値Bだった時の処理,
評価したい変数の値C => 評価したい変数が評価したい変数の値Cだった時の処理,
}

元記事を表示

いろんな言語での文字列操作の比較(VBA, Java, C#, PHP, Python, JavaScript)

うちのような小さな会社が、受託案件を長年やっているといろんな言語の保守メンテをやる必要があるのですが
文字列操作、この言語でなだっけ?とよく忘れてしまいます…
よく使うものを中心に文字列操作をまとめていきます。
完全に個人的な忘備録です。

主にVBAを中心に Java, C#, PHP, Python, JavaScriptについて書いていきます

[文字数の長さを取得する](#文字数の長さを取得する)
[文字列から指定文字数の文字を取得する(トリミング)](#文字列から指定文字数の文字を取得する(トリミング))
[文字列から左側の指定文字数の文字を取得する](#文字列から左側の指定文字数の文字を取得する)
[文字列から右側の指定文字数の文字を取得する](#文字列から右側の指定文字数の文字を取得する)
[文字列から指定文字を検索する](#文字列から指定文字を検索する)
[文字列の後ろから指定文字を検索する](#文字列の後ろから指定文字を検索する)
[文字列を置換する](#文字列を置換する)
[アルファベットの小文字を大文字に変換する](#アルファベットの小文字を大文字に変換する)

元記事を表示

OTHERカテゴリの最新記事