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

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

json_encode PHP 他言語に値を渡す

## 用途
他言語に値を渡したいときに使う。

## 使用方法
JSONは、多様なプログラミング言語に対応するデータ記述言語。
JSONを使うことで言語関係なく値の受け渡しが可能になる。
“`php:書き方
json_encode($値, JSON定数);
“`
※JSON定数は省略可能
“`php:例
json_encode($hoge);
“`

### 日本語で変換
“`php:書き方
json_encode($値, JSON_UNESCAPED_UNICODE);
“`
※JSON定数に `JSON_UNESCAPED_UNICODE` を指定する。

### 値ごとに改行して出力
“`php:書き方
json_encode($値, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
“`
※JSON定数に `JSON_PRETTY_PRINT` を指定する。
※日本語に変換するJSON定数と併用可能。

元記事を表示

str_replace str_ireplace preg_replace 文字列を置換 PHP

## 用途
対象の値の中に指定した文字列が存在した場合に、その文字列全てを置換したい時に使う。

## 使用方法
### str_replace
“`php:書き方
str_replace( $検索したい文字列, $置換したい文字列, $検索対象の文字列, int &$count )
“`
**第1引数**
検索したい文字列。この文字列があったときに置換する。
**第2引数**
置換したい文字列。この文字列に置換する。
**第3引数**
配列などを置換した際に、置換した回数が表示される。省略可能。

“`php:例
$hoge = “red, green, blue”;
$hogehoge = str_replace(‘red’, ‘yellow’, $hoge);

echo $hogehoge;
// 結果
“yellow, green, blue”
“`
※日本語の置換も可能
### str_ireplace
文字の大小を区別せずに置換する。使い方は同じ。

### preg_replace
正規表現で検索する。第1引数に検索したい正規表現を入れる。

元記事を表示

AWS SDK for PHPのVersion2とVersion3の主要ページへのリンク集

AWS SDK for PHPのVersion2とVersion3の主要ページへのリンク集。
咄嗟の時にすぐアクセスできる用にまとめました。

## AWS SDK for PHPドキュメント群 TOPページ

[AWS SDK for PHP Documentation](https://docs.aws.amazon.com/sdk-for-php/index.html)

## 主要ページへのリンク集

||Version2|Version3|
|—|—|—|
|PHPのバージョン |5.3.3以上 |5.5以上 |
|要件 |[Requirements – AWS SDK for PHP 2.8.30 documentation](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/requirements.html) |[Requirements and Recommendations for the AWS SDK for PHP Version 3 – docs.aws.amazon.com](http

元記事を表示

PHPでフレームワークを使わずに掲示板アプリを作成してみる② 会員登録編

# はじめに
※自身の学習を記事に投稿することでアウトプットするのが目的です。
「よくわかるPHPの教科書」のchapter6に書いてある通りにアプリを
作成していくので、私と同じような駆け出しエンジニアの皆さんは、
書籍を買ってアプリを作っていただいた方がわかりやすいかもしれません。

# 使用しているエディタ、実行環境
* VS Code
* XAMPP

* PHP7
* windows

## 登録画面のHTMLを作成する
“`

次のフォームに必要事項を入力してください

ニックネーム必須
メールアドレス必須
元記事を表示

Composerをインストールして使ってみる

## Composerとは
>Composerは、PHPでの依存関係管理のためのツールです。プロジェクトが依存するライブラリを宣言することができ、それらを管理(インストール/更新)します。
引用:[composer入門](https://getcomposer.org/doc/00-intro.md)(翻訳)

:::note warn
※注意
基本的に筆者は上記引用の[composer入門]を見ながら進めていますが、本記事によって生じたあらゆる損害について、筆者は一切の責任を負いません。
あくまでもメモとして書いているので利用する場合は自己責任でお願いいたします。
:::

## ダウンロードする
ダウンロードするにはこの次のリンクから自分の環境のモノを選んでダウンロードしてください。

———————————————

### Linux / Unix / macOS の場合

[Installation – Linux / Unix / macOS](https://getcomposer.org/doc/00-i

元記事を表示

LaravelとHubspotをAPI連携してみる

こんにちは、名古屋のスタートアップでエンジニアしているfujitaです。
今回は、LaravelとHubspotをAPIで連携する方法について解説します。

## Hubspotとは?
Hubspotとは、マーケティングをはじめとした、顧客管理が簡単に行えるツールです。
Hubspotには、さまざまな機能があり、営業やマーケティングなどに役立つツールです。機能についてはHubspotの公式ページをご覧ください。
[Hubspot公式](https://www.hubspot.jp/)

## 今回の実施すること

今回は、Laravel側で新規会員登録をしたら、HubspotのAPIを使って、Hubspotのコンタクトを作成したいと思います。Hubspotのコンタクトとは、お客さんの情報のことです。

![スクリーンショット 2022-04-25 10.57.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628086/d2a36cb4-8867-1e1a-fe86-6e79c9e934a8.p

元記事を表示

PHPのpreg_match()でよく使う正規表現の備忘録

PHPのpreg_match()をよく使うのですが、毎度毎度正規表現を調べており面倒であったため、よく使うものを備忘録として残します。

# 本記事の環境

ホストOS:Windows10 Pro 64bit 16GB
ゲストOS:Red Hat Enterprise Linux 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
Tera Term:4.105
PHP:7.4

“`php
// 空である場合
if (preg_match(“/\A[  \t\r\n]+\z/”, XXX) || (XXX == “”)) {
}

// 月(01~12)である場合
if (preg_match(“/\A(0[1-9]|1[0-2])\z/”, XXX)) {
}

// 英数字である場合
if (preg_match(“/\A[a-zA-Z0-9]+\z/”, XXX)) {
}

// テキストファイル(.txt)である場合
if (preg_match(“/\.txt/i”,

元記事を表示

Laravelのデバック方法

## Logを使ったデバック方法
“`php
//変数の場合
\Log::debug($debug);

//配列やオブジェクトの場合
\Log::debug(print_r($debug, ture));
“`
こうすればLogファイルに出力されます!

useを使うパターンだと、
“`php
use Illuminate\Support\Facades\Log;
“`
これをしてあげれば`\`が先頭にいらなくなります!

## SQLのクエリログを確認したい時
`\DB::enableQueryLog();`と`\Log::debug(\DB::getQueryLog());`を実行前後に挟んであげると確認できます!
“`php
$post = new Post;

\DB::enableQueryLog();
$post = $post->where(‘title’, ‘Laravel’)->get();
\Log::debug(\DB::getQueryLog());

//ddでも出来ます
\DB::enableQueryLog();
$post = $post->

元記事を表示

Laravelのリファクタリング例

## throw_if
before
“`php
if ($boolean) {
throw new CustomException();
}
“`
after
“`php
throw_if ($boolean, CustomException::class);
“`

## abort_if
before
“`php
if ($boolean) {
abort(403);
}
“`
after
“`php
abort_if ($boolean, 403);
“`

## @continue
“`php
@foreach ($results as $result)
@if ($result->type === 1)
@continue
@endif

@endforeach
“`
after
“`php
@foreach ($results as $result)
@continue ($result->type === 1)

@endforeach
“`
## @bre

元記事を表示

PHP / Laravel でサクッとAPI作る

サクッと Laravel で API を作るためのメモ

# バージョン

PHP 7.3.29
Laravel 8系

# artisan コマンド

「職人」を意味する言葉。
Laravelが用意しているコマンドラインインターフェイス。
モデルやコントローラーもこのコマンドで作成する。

## 参考
https://readouble.com/laravel/8.x/ja/artisan.html
https://qiita.com/zaburo/items/37768b743ed6d0e28bf5

# Model 作成

Laravel ではEloquentという[ORM](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E9%96%A2%E4%BF%82%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0#:~:text=%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3

元記事を表示

Laravelを使ってユーザー認証機能を「本気で」実装してみる①

本稿では、Laravel 6系を使ってユーザー認証機能を実装する方法を解説します。
タイトルに **「本気で」** とある通り、ただコマンドを打って「はい、出来ました~」ではなく、きちんと実際のアプリケーションとして運用できるようなクオリティを目指して実装します。詳しくは、要件定義の項目をご確認ください。

# 要件定義

### 開発環境

– LAMP環境(筆者はDockerを使用)
– PHP 7.4
– Laravel 6
– MySQL 5.7
– Node.js 12
– DB接続クライアント:phpMyAdmin
– メール送信テスト:MailCatcher

### 実装する項目

– ユーザー認証機能(新規登録/ログイン・ログアウト)
– ダミーデータの挿入
– メール認証機能
– パスワードリセット機能
– ログインなしでアクセスした場合のリダイレクト先のカスタマイズ
– 画面、及びメールの日本語化
– パスワード設定時に独自バリデーションを追加(半角英字(小文字)、半角英字(大文字)、半角数字を1文字以上含む8文字以上)

# 本編

元記事を表示

ABC249にPHPで参戦(ABC挑戦1回目)

# 私のこと
PHP実務歴1年半
とは言え職場柄PHPを長くやってきた先輩がいたわけでもないので独学みたいなもん
実務で触ってる言語がPHPとJavaScriptくらいなものなので悩んだ末PHPで挑むことにした

# ABSの記録
そもそもAtCoderやり始めたのが[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)を見てからなので若干ネタバレくらった状態でした。それでもOtoshidamaとTravelingは一旦投げ捨てました。

先週は予定があって出られず先々週はエントリーしたくせに寝落ちしてたため、ABSやってからちょっと間の空いてからの挑戦でした。

# 結果
5541位
合計(誤答) 300(5)
時間88:18
A:AC(1)26:52
B:AC(4)63:18
C:WA(2)

## A : [Jogging](https://atcoder.jp/contests/abc249/tasks/abc249_a)

元記事を表示

laravelマイグレーションで複数カラムのunique制約を削除する方法

## 課題

laravelのマイグレーション実行時、複数カラムのunique制約を削除する際、以下のようなエラーが発生して正しく削除されない事があります。

“`php
SQLSTATE[HY000]: General error: 1553 Cannot drop index ‘identity_providers_user_id_provider_name_unique’:needed in a foreign key constraint (SQL: alter table `table_name` drop index `identity_providers_user_id_provider_name_unique`)
“`

unique制約を削除したい対象が外部キー制約も適用されている場合、外部キー制約を先に削除する必要があります。

## 解決方法

先に外部キー制約を削除してからunique制約を削除するようにします。

例えば、以下ようなケースの場合、マイグレーションはこのように記述します。

– identity_providersテーブルにuser_id,

元記事を表示

スコープ演算子(::) アロー演算子(->) PHP

## スコープ演算子(::)
インスタンス化していない状態でプロパティ(変数)やメソッド(関数)にアクセスしたいときに使う。
“`php:クラス外からアクセスする際の例

“`
※クラス外からアクセスする場合は 
`クラス名::アクセスしたいプロパティ(変数)やメソッド(関数);`
※クラス内からアクセスす

元記事を表示

クラスを扱うときに気をつけること

スクレイピングとは「データの整形や抽出を行うデータスクレイピング」

php
クラスの継承はひとつしかできない

クラスをインスタンス化する時、変数名とクラス名は一緒にしないほうがいい。
(例)$display5 = new display5;

require_onceは絶対パスでの指定が望ましいかも

-todoapp_list.php
-class
-DB
-dbc.php
-listpage
-display5.php

上記のフォルダ構成の時、dbc.phpを読み込んでいるdisplay5.phpをtodoapp_list.phpに読み込みたい時、display5.phpのrequire_onceでは__DIR__. ‘/../DB/dbc.php’のようにパス指定する

元記事を表示

Monterey付属のhttpdで、phpのバージョンを仮想ホストごとに設定する

## ことの発端

これまでwindowsのIIS上で、仮想ホストごとに違うバージョンのphpを動かしていました。開発マシンをmacにしたので、こちらでも同じことができないか調べてみました。Montereyはphpが同梱されていないのでbrewで入れることになりますが、brewで入れたphpには署名がされていないためか、付属のhttpdにphpモジュールを組み込むところで弾かれてしまいます。

そこでメモリに組み込むモジュールではなく、TCP/IP経由で処理を投げるphp-fpmを使ってみることにしました。あちこち参考にさせて頂き試したところ、下記の方法でできたので記録として残したいと思います。

## php-fpmの設定

brewで入れたphpにはphp実行サーバとでも言うべきphp-fpmが同梱されており、例えば
brew install php@7.4
で入れた場合、

brew services start php@7.4 (停止はstop)
のコマンドで7.4のphp-fpmがポート9000で起動されます。ちなみに9000は昔はxdebugのデフォルトポートだったので、よ

元記事を表示

【検証】PHPのrequireにスコープ?

こちらの記事でrequireについて検証しました。

https://qiita.com/4U5zo/items/7ee8114a94d7d410037a

その際コメントでrequireにもスコープがあって必ずしも一度宣言すればよいわけではないとご指摘を頂きました。ご指摘いただけると学習になるので本当に助かります!!
今回は続編としてrequireのスコープについて検証します。

いきなりですが公式ドキュメントの文章を引用します。
>ファイルが読み込まれるとそのファイルに含まれるコードは、 includeもしくはrequireが実行された 行の変数スコープを継承します。 呼び出し側の行で利用可能である全ての変数は、読み込まれたファイル内で利用可能です。 しかし、読み込まれたファイル内で定義されている関数やクラスはすべて グローバルスコープとなります。
https://www.php.net/manual/ja/function.include.php

初見ではなかなか悩ましい文章でした。
実行された行のスコープを継承しますと言いつつグローバルスコープとなります??ってなりますが今回

元記事を表示

PHPでフレームワークを使わずに、掲示板アプリを作ってみる①DB設計編

# はじめに
※自身の学習を記事に投稿することでアウトプットするのが目的です。
「よくわかるPHPの教科書」のchapter6に書いてある通りにアプリを
作成していくので、私と同じような駆け出しエンジニアの皆さんは、
書籍を買ってアプリを作っていただいた方がわかりやすいかもしれません。

# 使用しているエディタ、実行環境
* VS Code
* XAMPP

* PHP7
* windows

# DBを設計していく

### 必要な機能の洗い出し

掲示板アプリに必要な機能を洗い出していきます。
簡単なもので、思いつくところだと、こんな感じでしょうか。

* 文章を投稿する機能

* 文章に返信できる機能
* 写真をアップロードできる機能
* 会員登録ができる機能
* 退会できる機能
* ログインできる機能
* ログアウトできる機能

### 機能に対するデータベースの項目を考えてみる

大まかに、重複してもいいので考えてみます

・文章を投稿する機能
メッセージ
会員情報
・文章に返信できる機

元記事を表示

【php】tips

### 平方数の判定
与えられた整数の平方根の小数点以下を切り捨て、それを二乗して元の数になるかどうかを判定
“`PHP
function is_square($n)
{
$sqrt = floor(sqrt($n));
return ($sqrt*$sqrt == $n);
}
“`

### 絶対値
“`PHP
abs(-1);
“`
“`PHP
1
“`

元記事を表示

【php】配列操作基礎

# 配列

配列すべてはechoでは出力できない
“`PHP
$team = array(“勇者”, “魔法使い”);
print_r($team);
“`

特定の要素のみを出力する場合はechoを用いる
“`PHP
echo $team[1];
“`
“`PHP
魔法使い
“`

### 要素の追加
“`PHP
$team[] = “ドラゴン”;
print_r($team);
“`
“`PHP
Array (
[0] => 勇者
[1] => 魔法使い
[2] => ドラゴン
)
“`

### 要素の削除(unset)
ただしunsetを用いた場合、その番号は歯抜けになる
“`PHP
unset($team[1]);
print_r($team);
“`
“`PHP
Array (
[0] => 勇者
[2] => ドラゴン
)
“`

### 特定の文字で区切って配列に追加(explode)
“`
勇者,魔法使い,ドラゴン
“`
“`PHP
$input = trim(fgets(STDIN));
$array = explode(

元記事を表示

OTHERカテゴリの最新記事