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

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

Laravel:emptyの罠

emptyの使い方、完全に勘違いしていた。

Laravelのcollectionに対して空かどうかの判定はisEmpty()を使う。
普通にforeachでイテレートできるのでempty(collect([]))で判定できるもんだと思っていたら、全部trueになってた。

[Laravel 5.8 コレクション](https://readouble.com/laravel/5.8/ja/collections.html)
>Illuminate\Support\Collectionクラスは配列データを操作するための、書きやすく使いやすいラッパーです。

例えばこのような例や
“`php
$collection = collect([]);
while(!empty($collection)) {
// do
}
// => 無限ループする
“`

ガード節などでうまくいかない。
“`php
if (!$collection) {
return; // => ここに入ることはない。
}
// do
“`

友人の言葉を借りると、
“`php
empty($va

元記事を表示

【PHP】クラスのstatic(スタティック)はなぜ使うのか?

# ※staticをなぜ使うか?

インスタンスの生成を省略できる※他はわからん

“`PHP

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part6

皆さんこんばんわ(この記事を投稿したのは真昼間です)

今回も引き続き、プロフィール画面の続きを開発していきます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f323238313934362f30396630376266302d323930352d643666652d366366632d613837386465373638643834.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/0e6465c6-e1b2-6329-74d7-3f2965a07b49.jpeg)

今までの開発記録はこちらへ
胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編

元記事を表示

【PHP】クラスとは

# ※クラスをなぜ使うか?

共通で使いたい処理をまとめていつでも呼び出せるようにしたいから

“`PHP
cat;
if($animal === ‘dog’) return $this->dog;
if($animal === ‘bird’) return $this->bird;
}
}

$food = new Food();

echo “猫の餌:”.$food->cry(‘cat’);
echo PHP_EOL;
echo “犬の餌:”.$food->cry(‘dog’);
echo PHP_EOL;
echo “鳥の餌:”.$food->cry(‘bi

元記事を表示

【個人開発】誰でも、気軽に使える!エンジニア向け案件マッチングサービスを作ってみた。

# はじめに
![match.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185943/677239f4-ca49-4e4f-d582-ad939c46908d.png)

はじめまして、まーと申します。
Twitter↓

今回作成したサービス↓
https://match-engineer.com/

昨今では、コロナウイルスの影響もあり、「テレワーク」や「リモートワーク」といった言葉が一般の方々にも浸透しました。そんな中、「自分も案件を獲得してみたい!」「まずは副業からはじめてみたい!」といったニーズも増えています。
(参考:https://xn--pckua2a7gp15o89zb.com/news/20211109)

しかし、そのようなニーズが増えている一方で、経験の浅い学生や主婦のような方々が、**気軽に挑戦できる環境が整っているとは言いづらい状況**となっています。エンジニアの方が案件を獲得するクラウドソーシング

元記事を表示

PHPで各種カレンダーへの予定追加機能を実装する

# はじめに
イベント予約時にカレンダーへの予定追加を可能とする機能を実装する機会があり学習したのでまとめる。
カレンダーへの予定追加の方法としては以下2通り。


①icsファイルのダウンロード
②パラメーターを含んだリンクの設置(Googleカレンダー、Yahoo!カレンダー、Outlook)

※Outlookのみパラメーターを利用すると一部不備があるため、実際にはicsファイルのダウンロードとした。

尚、icsファイルの書き方自体は他にもたくさん記事があるため詳細については割愛し、PHPでの実装時の流れや詰まった点、パラメーターの種類について主に記載していく。

# icsファイルとは
カレンダーにインポートすると記載された内容でカレンダーに登録される。
Googleカレンダー、Outlookなどにインポート可能。(Yahoo!カレンダーは不可)
iCalendarはicsファイルを開くと自動的にカレンダーへの追加画面となる。
特徴は以下。

– MIMEタイプは「text/calendar」
– 拡張子は「.ics」
– 中身はプレーンテキ

元記事を表示

ベル文字を出力して音を鳴らしてみた。

授業で正規表現の学習中に、ベル文字というモノがあることを知ってしまった。
コレは鳴らしてみないと

# ベル文字とは
その昔、テレタイプなどの通信機器で、通信相手先の端末のベルを鳴らすために送信した制御文字(¥a)のようです。
さすがのオッチャンでも、テレタイプは現物見たことないので、よう解りません。

https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E6%96%87%E5%AD%97

# では、鳴らしてみます
といっても、ベルが鳴るわけではなく、システムのアラート音(通知音)が鳴るだけですけどね。
## まずJava

~~~Java:Bell.java
class Bell{
public static void main(String[] args) {
System.out.print(“\007”);
}
}
~~~
`javac Bell.java`
`java Bell`鳴りました。

## シェルスクリプト
Macなので Z Shellです
“`bash:Bell.sh
#!/bin/zsh
echo

元記事を表示

FileAPIを使い「テキストファイルでキーワード変更可能」なタイピングソフトを作ろう!:JavaScrpt初級~中級者向け

Youtubeで公開した内容を記事にしました。
タイピングソフトを作ろう!【後編】「HTML/CSS/JavaScript/PHP…のキータイピング練習にも対応」JavaScript入門
以下Youtubeでの解説動画も張っておきます。(同じ内容ですが、詳しすぎるほど説明してます(笑))

– YouTube
https://youtu.be

◆ サンプルファイル
Github からダウンロードしてご利用ください
https://github.com/yamazakidaisuke/keytyping_youtube

◆ どんなキータイピングアプリ?
外部ファイルでキーワードを管理します、以下のように並べるだけ。
これはJavaScriptでFileApiを利用することで可能になります。

以下画面構成を見ていただければわかりますが、
上記のテキストファイルを読み込めば、オリジナルのキーワードをタイピングできます!!

image.png

◆ 変数を準備
keytyping.html
//***************************************
//グ

元記事を表示

PHP エラー ’headers already sent’ 参考サイト

https://php1st.com/69

https://ja.stackoverflow.com/questions/5453/php-%E3%81%AE-headers-already-sent-%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AF%E3%81%A9%E3%81%86%E7%9B%B4%E3%81%97%E3%81%9F%E3%82%89%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B

このエラーは HTTP ヘッダーを変更する関数(header 等)の呼び出しより前に、すでに何かがアウトプットされているために発生する。

アウトプットには以下のようなものがあります。

#### 意図していないアウトプット

+ `` の後にある、スペースや改行の出力
+ PHP ファイルの先頭にある UTF-8 の BOM の出力
+ PHP による `Error` や `Warning` メッセージ出力

#### 意図したアウトプット

+ `print`、`echo`、`rea

元記事を表示

LaravelでselectRawでバインドした時に「Invalid parameter number」エラー発生

## 状況
LaravelでselectRawを使いselect文を書き、バインド変数を設定しクエリを発行したところ`Invalid parameter number`のエラーが発生した。

“`php
$data = 100;

$query = self::selectRaw(
“‘?’ as test_column”,
[$data]
);

return $query->get()->toArray();
“`

“`sh
message: “SQLSTATE[HY093]: Invalid parameter number (SQL: select ‘100’ as test_column from `test_table`)”
“`

`Invalid parameter number`(パラメータの数合ってないよ!)ってなってるけど、バインド変数の数(`selectRaw`の第2引数)もあってるし、エラーで出力されてるSQL見るとちゃんとバインドされてるし何でだ。。。と途方に暮れました。。。
https://readouble.com/larave

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part5

皆さんこんにちは、本格的な勉強会に参加したら???になった私です。

今までの開発記録はこちらへ
胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編
公式ドキュメントの言う通り、パッケージをインストールされたら、Inertia.jsが導入されて???になった編
マルチログインを作ってみた編
デザインをtailwindcssに丸投げする編

# いよいよユーザー画面を作る
今回の目的はユーザーのプロフィール画面
![

元記事を表示

JSONが正しい文法なのにJSON.parseできない

JSONの文法と、PHPの文法(今回あまり関係ない)と、JavaScriptの文法と、HTMLの文法とでごちゃごちゃに怒られたのでどの部分が明確な原因かわかっていないけど順番にメモする。

## はじめに

APIから吐き出されたJSONをPHPで取得し、それをJavaScriptで加工・処理してHTML上に表示するという組込み作業の過程で、文法チェッカーなどでもJSONの構造に問題はなさそうなのに、JSON.parseがエラーになる。

https://qiita.com/nc30mtd/items/8fbdda2be3601585f08e

検索すると上のような記事が出る。console.logに表示されないが特殊文字がエラーの原因になってるよという話。
上記のコードで対策してみたがそうするとJSON内の改行コードも漏れなく消え失せてしまったので、ちょっと本意でない。HTML上で表示する観点から改行コードには消えてもらうのではなく、最終的に改行タグになってもらう必要がある。別の方法を考える。
(いま思うと二つ目のメソッドから書き始めたせいかもしれない。なんでそんなことしたんだろう)

元記事を表示

Sodium がなくて Laravel Passport のデプロイに失敗した

ローカル環境で、Laravel Passportを追加したプロジェクトをレンタルサーバー(Xserver)へデプロイした際、
「ext-sodium がない」と composerに怒られたので、その解決策をまとめておきます。

# 今回の環境

– PHP 7.4
– Composer 2.0
– Laravel 8

# 起こったこと

Xserverで、`composer install`しようとしたら落ちました。

`laravel/passport`は、`lcobucci/jwt`に依存しており、
`lcobucci/jwt`をインストールできず、失敗してしまったようです。

※ こんな感じ↓
“`
lcobucci/jwt 4.1.5 requires ext-sodium * -> it is missing from your system. Install or enable PHP’s sodium extension.
“`

sodium を入れるには、管理者権限が必要なため、
レンタルサーバー(Xserver)から乗り換えが必要か…?と、思ってい

元記事を表示

【Docker・Laravel】シンボリックリンクしたのに画像が表示されない。パスも合っているのに。

### エラー内容
以下のように、 __画像が表示されない__ というエラーが発生していました。
![スクリーンショット 2022-03-02 15.31.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2525372/24a00c2c-c8da-58ef-09f0-fa9494a1881e.png)

laravelでの画像アップロード機能は、こちらの記事を参考にしていました。

https://note.com/laravelstudy/n/n038bd68f53a7

全てやり方通りに行ったのにも関わらずに、謎の表示されないエラー。
正直、6時間くらいはエラーにハマっていました。

### 試したこと
大体、「Laravel 画像 表示されない」などで検索すると
解決方法として出てくるのが

①シンボリックリンクができていない
②画像がDBに保存されていない
③画像のパスが間違っている

この3つでした。

:::note alert
この3つは全てクリアできているのにも関わらず、エラーが出る

元記事を表示

CakePHP4でajaxが403になる件

## 問題

CakePHP4でajaxすると403になる。

## 原因

「config/routes.php」に全体のCSRFチェックの処理がデフォルトで入っているため、
フォーム以外からのPOSTはエラーになる。

## 対策1

以下を参照

【CakePHP】CakePHP4でAjaxからのPOSTが403(Forbidden)エラーになる現象の解決策

## 対策2

最初は対策1をとっていたが、トークンを送信する形にしてみた。

“`html:html
laravel学んで2か月で自サービスを開発した話 Part4

みなさん、こんにちは。
見切り発車で開発記録を載せていますが、part20超えそうな気がしてきます

今までの開発記録はこちらへ
胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編
公式ドキュメントの言う通り、パッケージをインストールされたら、Inertia.jsが導入されて???になった編
マルチログインを作ってみた編

## 管理者機能を作ります!
### 現在の開発状況
![スクリーンショット (1633).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/

元記事を表示

駆け出しエンジニアの初開発と環境構築

### 環境構築(CodeIgniterのインポート)

エンジニアとしてスタートを切ったばかりの駆け出しが、初開発を終えての備忘録と、今後駆け出すエンジニアの役に立てたらなと思い、記事を投稿します。
まだまだ知識が少ないので、間違いも沢山あると思います。
この記事を読んでくださる方からアドバイス等たくさん頂けると嬉しいです。

### 開発環境

・Eclipse
・CodeIgniter3
・MySQL
・GitHub
・Bootstrap4

初開発ではECサイトを作成しました。
CodeIgniterはPHPの、Bootstrapはフロントサイドのフレームワークです。
DBはMySQLを使用し、Eclipseで開発を行いました。

今回はCodeIgniterのインポート方法です。
以前はJavaとSpringを使用して学習していました。SpringはJava用のフレームワークで、Eclipseに元々入っていたので、画面左上のファイルからSpringのプロジェクトを作成できました。しかし、CodeIgniterはEclipseに入っていません。どうすればいいのか迷ったので、その

元記事を表示

PHP returnで戻り値を返す

returnによって返される戻り値について下記の点を常に意識できるように備忘録として。
**returnが出来ること:** 処理結果を関数に戻すことができる。
これによりreturnによって返された関数の処理結果を使いまわすことができる。(変数に代入して他の関数の引数として使う等。)

**returnがされた時に起こること:** 関数の処理はreturnがされた時点で終了する。
例えば下記のような関数function convert()ではreturn①の時点でこの関数の処理は終了となるため、return②は発生しない。(ダブらない。)
“`php

元記事を表示

【WordPress独自関数】「JSON-LD」形式の構造化データ「Article」を実装する関数

SEO対策にもなる「JSON-LD」形式の構造化データ「Article」をWordPressに実装する方法を紹介します。
プラグインを使用すればインストールして管理画面から設定するだけで設置することも出来ますが、今回はプラグインを使わない方法を紹介したいと思います。

## 「JSON-LD」形式の構造化データ「Article」の記述方法

今回は「JSON-LD」形式の構造化データ「Article」の作成方法を紹介します。

“`