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

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

PHP sprintf フォーマットに沿って文字や数字を代入・先頭に0を追加する

## 用途 文字や数字をフォーマットに沿って代入したいときに使う。 先頭に0を追加したいときに使う。 ## 使用方法 “`php:書き方 sprintf(表示したい文字列のフォーマット, 表示したい文字1, 表示したい文字2, ….) “` ### フォーマットについて(記述したもの以外にもあります) `%s` には文字列、`%d` には数値を代入できる。 例 「〇〇くんは、おもちゃを〇個持っています。」という文に代入する場合は下記のフォーマットになる。 “` %s くんは、おもちゃを %d 個もっています。 “` 「田中くんは、おもちゃを3個持っています。」という文を作る場合は下記のようになる。 “`php: sprintf(“%sくんは、おもちゃを%d個もっています。”, “田中”, “3”) “` ※表示したい文字には変数を入れることもできます。 “`php: $name = “田中”; $number = “3”; sprintf(“%sくんは、おもちゃを%d個もっています。”, $name, $number) “` ### 先頭に0を追加する “
元記事を表示

LaravelでのMigration/Seederを使ったDB試験の話

Laravelの自動テストにおいてDBを使った試験はどうしますか? DBを使った自動テストは作っていなませんという人も多いでしょう。 今回はMigrateとSeederを使いDBを使った試験を実現します。 # migrateとseederとは migrationでは定義ファイル通りにスキーマを作成します。 seederでは作成された空のスキーマにデータを入れます ということです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2481837/fa410a91-e97f-0674-207a-7105c1a4b735.png) # migrationとは マイグレーションはデータベースのバージョン管理のようなものです。 データベースのスキーマ定義し共有することができるようになります。 ソース管理から変更を取り込んだ後、ローカルデータベースのスキーマにカラムを追加するよう指示があるなら、差分を更新されます。 その差分管理を行うにはマイグレーションが問題を解決するでしょう。 参考 : h
元記事を表示

GutenbergのHTMLコメント(Data & Attributes)で囲われたHTMLを拾ってREST APIのフィールドに追加する(TODOあり)

“`php add_action(‘rest_api_init’, function () { register_rest_field(‘[投稿タイプ名]’, ‘[フィールド名]’, [ ‘get_callback’ => function ($object): ?array { /** * htmlを用意する */ $html = $object[‘content’][‘raw’] ?? null; /** * Gutenbergのhtmlコメントで囲われたhtmlを拾う * * 以下htmlの場合[コンポーネント名]、[コンポーネントノーズ]を拾う * * [コンポーネントノーズ] *
元記事を表示

Laravel8のFormRequestで2つのうち片方のみ必須のバリデーションを作る

# やること タイトルのまんま。 FormRequestを使って2つのうちいずれか必須のバリデーションをしたいけど標準のバリデーションルールにそんなものはないっぽかったので自作します。(あったら教えてください!) `required_without:hoge`でそれっぽくできそうなんだけど、これだとどちらも入力されているときに弾くことができない。 # やる 入力にはname1とname2があり、いずれか片方のみ必須という条件でバリデーションをかける。 Artisanコマンドでファイル作成 “`shell php artisan make:rule EitherRequired “` “`php:EitherRequired.php
元記事を表示

私だけがずっと困っていたphpbrew+mysqlのコンパイル

Phpbrewでphpのバージョン管理をしているのですが、もろもろコンパイルに苦労したときの話。 ## 私のmacの環境 * homebrewにてmysql5.7と8.0がインストールされており稼働中。 * PHP7.4とPHP8.0が必要 ## phpとmysqlの対応表 |PHP | mysql | |:———–|————:| | 7.4 | 5.7 | | 8.0 | 8.0 | ### phpbrewでphpのインストール 8.0に関してはあんまり苦労しなかった。 “` phpbrew install 8.1.0 +mysql=”$(brew –prefix mysql)” +pdo= +gd=”$(brew –prefix gd)” +bz2=”$(brew –prefix bzip2)” +apxs2= +json= +phar= +xml= +curl=”$(brew –prefix curl)” +zip= — –with-mysqli=/usr/local/opt
元記事を表示

パーフェクトPHPをDocker環境で

# 概要 パーフェクトPHPで環境構築をローカルでやりたくなかったので、Dockerで環境構築しました。 自分と同じこと考える方もいるかもしれないので記事にしました。 # 前提知識 Dockerを軽く触れる人向けです。 自分はほとんど触れません。 # 内容 パーフェクトPHPではサーバーとしてApacheを使っていますが、自分が使い慣れているのでnginxにしてあります。 ## ディレクトリ構成 “` . ├── docker │ ├── db │ │ ├── Dockerfile │ │ └── my.cnf │ ├── php │ │ ├── Dockerfile │ │ └── php.ini │ └── nginx │ └── default.conf ├── server │ └── study.localhost <= phpファイルを置く場所(ドキュメントルート) │ └── index.php <= 'study.localhost'にアクセスした時に実行されるPHPファイル。(/
元記事を表示

Laravelのルートモデル結合(ルートモデルバインディング)でid以外のカラムを使用する

## ルートモデル結合の基本的な使い方 ### ルートモデル結合とは モデルを取得する際に必要な定型処理のコードを減らすためのLaravelの機能です。 ### 前提 以下の様なusersテーブルがあり、EloquentモデルのUserモデルを作成してあるものとします。
users
id – integer
name – string
### ルートモデル結合の利用方法 ルートモデル結合を利用してUserモデルをidカラムの値で取得したい場合は以下のようなコードになります。 URLのルートパラメータの値`{user}`とクロージャの引数の変数名`$user`を一致させ、引数の型にEloquentモデルの型を指定します。 “`php:web.php Route::get(‘users/{user}’, function (User $user) { return $user; // idカラムの値で取得 }); “` そうすると、URLのパラメータの値と一致するidカラムの値を持ったU
元記事を表示

php debug

file_put_contents(‘/var/www/html/public/log/log.txt’,print_r($query,true).”\n”,FILE_APPEND);
元記事を表示

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) “
元記事を表示

OTHERカテゴリの最新記事