PHP関連のことを調べてみた

PHP関連のことを調べてみた
目次

Laravelでジョブとキューを活用する方法

## はじめに
今回はLaravelのジョブとキューを活用して効率的に非同期処理を実行する方法について解説していきます
ジョブとキューの基本概念から実際の実装方法、設定、活用例、トラブルシューティング、ベストプラクティスを見ていこうと思います

## ジョブとキューの基本概念
### ジョブ(Jobs)とは
ジョブは、非同期で実行される処理単位を指します
例えば、ユーザー登録時のメール送信、画像のリサイズ、データのバックアップなどが該当します
ジョブをキューに投入することで、即時ではなくバックグラウンドで処理を行うことができます

### キュー(Queue)とは
キューは、ジョブを管理・処理するための仕組みです
ジョブはキューに投入され、指定されたワーカーによって非同期的に実行されます

## ジョブの作成方法と実行方法
### ジョブの作成
Laravelでジョブを作成するには、以下のコマンドを実行します
“`bash
php artisan make:job SendWelcomeEmail
“`

このコマンドにより、`app/jobs`配下にジョブクラスが作成されます
`

元記事を表示

【Laravel11】Roach PHPでjQuery のようなセレクタからxpathで記述するよう修正

# はじめに

こんにちは、エンジニアのkeitaMaxです。

前回作成したスクレイピングのサンプルをxpathで記述しようと思います。

前回の記事

https://qiita.com/keitaMax/items/f2abb408a8a2fbc9a988

# xpathとは

>XPathとは、データを収集する際に要素や属性を指定して、情報を取得するための言語です。
(引用:https://pig-data.jp/blog_news/blog/scraping-crawling/xpath/)

CSSセレクタのようにHTMLなどの要素や属性を指定することで情報を取得することができるもののようです。

# 前回の記述

下記のようにjQuery のようなセレクタを使用して書いていました。

“`
$subtitle = $response
->filter(‘main > div:nth-child(2) p:first-of-type’)
->text();
“`

これをxpathで書いてみようと思います。

# 修正結

元記事を表示

就労継続支援事業所で学習するプログラミング言語

# はじめに
収録継続支援事業所で学習するプログラミング言語について記事にします。

## 就労継続支援事業所とは?

>障害者手帳を持つ方の就労の機会の提供、生産活動の機会の提供する事業所
>現時点で一般企業への就職が不安、あるいは困難な方
>を対象にしています。

ソース
https://works.litalico.jp/syuro_shien/ikou_keizoku/

## 就労継続支援事業所で取り扱うプログラミング言語
JavaScript
PHP
HTML/CSS
VBA

## 解説
就労継続支援事業所でITの仕事を取り扱う場合、ホームページの作成が主となるためJavaScript、PHP、HTML/CSSを使うのがメインのようです。
VBAは勤怠管理に使うケースが多いようです。

# 最後に
就労移行と違って短時間勤務の問題があるため、プログラミング言語は検定されるのかなと思います。

元記事を表示

【Drupal】ダミーデータ作成テクニック ~ MBTIのデータ登録

## はじめに
以前、こちらの記事内でMBTIデータをTaxonomyTermで登録するスクリプトについて触れました。

https://qiita.com/umekikazuya/items/520efa0cd8689c0f3d8b

16個もGUIで作ってられないですよね。
その時に使用したMBTIデータ登録スクリプトを紹介します。

## サンプルデータ
以下のフォーマットの配列を用意します。
“`php
$data = [
[‘name’ => ‘ISTJ’,’vid’ => ‘mbti’],
[‘name’ => ‘ISFJ’,’vid’ => ‘mbti’],
[‘name’ => ‘INFJ’,’vid’ => ‘mbti’],
[‘name’ => ‘INTJ’,’vid’ => ‘mbti’],
[‘name’ => ‘ISTP’,’vid’ => ‘mbti’],
[‘name’ => ‘ISFP’,’vid’ => ‘mbti’],
[‘name’ => ‘INFP’,’vid’ => ‘mbti’],
[‘name’ => ‘I

元記事を表示

WordPress.comにあるDeveloper ConsoleAPIがちょっとだけわかった

# Developer Consoleとは
Wordpress.com APIのPlayGroudです。

https://developer.wordpress.com/docs/api/console/

Developer Consoleには以下にプルダウンがありますが、どこのAPIを使っているのかイマイチわからなかったです。

HerokuにLaravel11で作ったアプリをデプロイしたらログインできなくなった

環境
“`
php8.2
Laravel11
heroku-22
JawsDB mysql
Buildpacks
heroku/php
heroku/node.js
“`

アプリの仕様:

生成AIを使用してブログ記事を自動生成させるもの。
/にアクセスするとログイン画面が表示され
ログインに成功すると生成可能残数が表示される。
ログインはsessionで管理。

導入背景:

ローカルではDockerで開発したのでherokuもDockerで動かそうと思ったのですが
デプロイ後に403Forbiddenから抜け出せなくなったので
やむなくstackをheroku-22を使うことに。

起きた問題:

ローカルではトップ画面にログイン画面が出力されて、userとpassを入力すればログインできていました。
しかしherokuにデプロイした後はIDとPASSを入力しても再びログイン画面が表示されてしまうことに。

herokuのログをみると以下のことがわかりました。
“`$heroku logs -n 200 -a aibl

元記事を表示

正規表現におけるバックスラッシュ自身の表記方法について

一部 `pcregrep` [^1] を用いて説明しているが、これは言語仕様によるノイズを排除するためのもの

[^1]: PCRE の純正 grep。インストールの仕方などは省略

“`
# STRING => 検索文字列
# REGEXP => 正規表現
% echo STRING | pcregrep ‘REGEXP’
“`

の形で説明に利用している。

## 先に結論

16 進数表記を用いて記載する。特にお勧めは、`\xhh` 形式(ブレース無し)の `\x5c`。[^2]

[^2]: (少なくとも調べた言語中では)移植性が高いため

“`
% echo \\ | pcregrep ‘\x5c’
\ # <= マッチしている ``` こちらで記載するクセを付けると正規表現中に埋没することなく、 「ああ、バックスラッシュも対象なんだな。」と一目で判断が付く。 ``` # `[` か `\` か `]` に当るカスタム文字クラス % echo \\ | pcregrep '[\[\x5c\]]' \ # <= マッチして

元記事を表示

LaravelのEloquentを使ったデータベースからのデータ取得方法の違い

# データベースからのデータ取得方法の違い
Eloquentを使ったデータベースからのデータ取得をしてViewにて表示させようとした際に

“`php
// UserController.php

public function index()
{
$user = User::where(‘use_id’, 1)->get();
return view(‘users.index’, compact(‘user’));
}
“`
“`php5
//users/index.blade.php

{{ $user->user_id }}

“`
エラーメッセージ「プロパティ [user_id] はこのコレクション インスタンスに存在しません。」が表示される。
これは$userがコレクション(配列)であり、単一のオブジェクトではないためで、いままでgetメソッドは取得の際に単一オブジェクトを返すものと思っていた・・・

“`php
// UserController.php

public function index()
{
$user =

元記事を表示

【速習】LaravelとPHPブートキャンプ – QuickNetwork開発部

このコンテンツはクイックネットワークでエンジニアとして開発のお仕事する人が、ベーシックであるPHPとフレームワークのLaravelを用意に学べるよう作成いたしました。学生インターンとか新卒とか中途で他の言語経験がある方とかを対象にしている感じです。

PHPに関してはいくつかのサイトを参考に、Laravelのブートキャンプは本家サイトから引用しております。
[![](https://bootcamp.laravel.com/img/favicon/favicon-16×16.png)Laravel – Learn the PHP Framework for Web Artisans](https://bootcamp.laravel.com/introduction)

:::note warn
ちなみに本ドキュメントは[本家](https://bootcamp.laravel.com/introduction)を勝手に翻訳したものであり、意訳もかなり含まれております。
本家には翻訳公開して問題ないかの許諾をお願いしているところです。
その前提で読んでいただければと思います。
::

元記事を表示

PHP, Python の正規表現で、何故 \\ でバックスラッシュ \ がエスケープ出来るケースがあるのか

バックスラッシュ自身 `\` に対する正規表現で、バックスラッシュ 2個(`\\`) – *結果として埋め込まれるのは `\\\`* – で OK なケースがある。この説明を実際の仕様ではなく、日曜プログラマが理解可能なレベルで記載したい。[^1]

[^1]: 過去にあった同様の記事は見当らない、埋もれてる or 失われているので、、、

当然 `’//’` (PHP)、`r””` (Python) は使わない前提での文章となる。

## 前知識

– PHP, Python では、正規表現エンジンレベルでのエスケープ(PHP では PCRE)の他に、言語側の文字列としての展開を抑制するエスケープの2段階が必要
– 16進表記の文字列(`\x5c`) は(正規表現エンジンレベルでは)、エスケープの必要が無い(当たり前)

一部 `pcregrep` [^2] を用いて説明しているが、これは言語仕様によるノイズを排除するためのもの。

[^2]: PCRE の純正 grep。インストールの仕方などは省略 (PHP が入ってる環境なら入っているでしょ、知らんけど)

“`

元記事を表示

PHPで.propertiesファイルを使う

## プロパティファイル好きです!

こんばんは!私はとある大手企業で教育関係のお仕事をしています。

最近はJavaの新卒研修に参加して講義をしました。

はじめて3カ月も講義をして何より**自分が1番学んでました!**

## JavaといえばgradleかMaven!

JavaではXMLなMavenと.propertiesファイルのようなものを使うGradleの2択だった気がします。

JavaはYAML使わずにXMLのほかにpropertiesを使うことが多かった気がします。

しかし、PHPではほとんど使いません。

## そもそもPHPを使っている人がいない

みなさんPythonを使っているし私もFlaskやDjangoを使ってきました。

しかし問題があって、**PythonはWebと相性がそこまでよくない**というところがあります。

つまり、われわれがVPSを借りてウェブのサービスを始めようとなったときに

ほぼ100パーセント使うのが**Apache**となっており、PythonもいけるんですがPHPと比べると格段に面倒くさいです。

## Javaの習得は絶

元記事を表示

ServBayの組み込みComposerを使ったPHPプロジェクト管理

強力な統合型[ウェブ開発ツール](https://www.servbay.com)であるServBayにはComposerが付属しており、その使用方法は非常に簡単です。ComposerはPHPの依存関係管理ツールで、現代のPHP開発で広く使用されています。これにより、開発者はプロジェクトの依存関係を簡単に管理し、依存関係の関係を自動的に処理することができます。ServBayを使用すると、開発者はサードパーティライブラリを簡単に導入し、プロジェクトの依存関係を管理し、クラスファイルを自動ロードできます。

### Composerの紹介

ComposerはPHPプロジェクトの依存関係を管理するツールです。開発者はプロジェクトが依存する外部ライブラリを宣言し、これらのライブラリを自動的にインストールおよび更新できます。ComposerはPHPライブラリだけでなく、フレームワークやプラグインなどの他の種類のパッケージも管理できます。

### 主な機能
1. **依存関係管理**: Composerはプロジェクトの依存関係を自動的に処理し、すべてのライブラリバージョンの互換性を確保します

元記事を表示

PHPの歴史

PHP(Hypertext Preprocessor)は、ウェブ開発で広く使われているプログラミング言語です。初学者にも理解しやすいように、PHPの基本や関連する概念について詳しく解説します。

### 開発者の情報と歴史的背景
PHPは、1994年にRasmus Lerdorf(ラスマス・レルドーフ)によって開発されました。当初は、彼の個人ウェブサイトのアクセスを記録するための簡単なスクリプトとして始まりました。しかし、使いやすさと機能の充実により、多くの開発者が興味を持ち、改良を重ねた結果、現在のPHPが誕生しました。PHPは、動的なウェブページを簡単に作成できるようにするために開発されました。

### サーバーサイドとは?
サーバーサイドとは、ウェブサーバー上で実行される処理のことを指します。PHPはサーバーサイドのプログラミング言語で、ユーザーがウェブページにアクセスした際にサーバー上で実行され、結果がユーザーのブラウザに送信されます。これにより、ユーザーごとに異なる動的なコンテンツを提供することができます。

### オープンソースとは?
オープンソースとは、ソフトウェアの

元記事を表示

【PHPフレームワークFLow】GETリクエストだけどDB更新したい時の対処

# 初めに
PHPフレームワークFLowでは、GETリクエストの処理の中ではDB更新ができないという仕様になっています。そんな中、どうしてもGETの中でDB更新がしたいという場合もあるかと思います。今回はそんな場合の対処法について解説します。

# GETの場合DB更新ができない
実際に試してみました。
以下で作成したAPIにGETリクエストを送ってみたいと思います。

“`php: Getだけど登録を試みたAPI

元記事を表示

Laravel11.x HttpファサードとFakeを使って外部サービスのモックテストをする

## 結論
Httpのファサードをテストしたい時は下記のようにする

### 被テスト側
“`php:HogeController.php
json($response->json());
}
}
“`
→そのまま実行すると、404エラーになる
Routeは割愛

### テスト側
※PestPHPで記載しています
“`php:HogeTest.php

元記事を表示

【Laravel11】Roach PHPの The current node list is empty. エラーについて

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回はRoach PHPを使用していた時に`The current node list is empty.`というエラーが出た時の話をします。

# エラー内容について

スクレイピングを実行した時に以下のエラーが出ました。

“`
The current node list is empty.
“`

実際のコードは以下のような感じです。

“`
$subtitle = $response
->filter(‘main> div:nth-child(2) p:first-of-type’)
->text();
“`

サンプルと同じですが、指定しているURLを修正したので、`’main> div:nth-child(2) p:first-of-type’`ここでしている要素では` ->text()`がとれずにエラーになってしまっているようです。

# 解決策

解決策は簡単で、エラーが出ている箇所が以下のようにInvalidArgumentExceptionをthrowしているため、エラーをキャ

元記事を表示

Docker Compose を使って App / DB / Mail コンテナの開発環境を構築する

# はじめに
この記事では、Docker Compose を使った App / DB / Mail コンテナの開発環境の構築手順について記載します。

https://docs.docker.com/compose/

以下の記事では、 Docker Compose を使わずに構築する手順を記載しています。
また、構築する開発環境の要件や各種リソース情報もこちらの記事に記載があります。

https://qiita.com/Yasushi-Mo/items/6a4d1af9c7cdb3c68ce1

# 開発環境
開発環境は以下の通りです。

– Windows 11
– Docker Engine 26.1.1
– Docker Compose 2
– PHP 8.3
– MySQL 8.4.0
– Mailpit 1.18

# compose.yaml を作成する

## ファイルを作成する
まずはプロジェクト直下に `compose.yaml` を作成します。

“`powershell
├─compose.yaml
├─docker
│ ├─app
│ ├─db

元記事を表示

新たに気づいたissetとemptyの違い(PHP)

タイトルのとおりですが、emptyとissetの違いで今さらながらに気づいた部分があったので、メモとして残しておきます。

## やりたかったこと

– $hogeが空の配列
– falseにしたい
– $hoge[‘foo’]がtrue
– trueにしたい
– $hoge[‘foo’]がfalse
– falseにしたい

上記の条件を満たしたかった
## 結論

“`php
$hoge = array(‘foo’ => false);
if (!empty($hoge[‘foo’])) {
echo ‘true’;
} else {
echo ‘false’;
}
// falseが表示される

$hoge = array(‘foo’ => false);
if (isset($hoge[‘foo’])) {
echo ‘true’;
} else {
echo ‘false’;
}
// trueが表示される
“`
`isset`だと`$hoge[‘foo’]`がfalseのときでも`true`が返ってしまいます…
`!empty`だ

元記事を表示

PHPでX APIを利用してフォロー数、フォロワー数を取得

XのAPIが有料化されてから初めて触りました。
今となっては、なかなか使う機会もないけどメモ。

# ライブラリ
https://github.com/abraham/twitteroauth

“`
composer require abraham/twitteroauth
“`

## XのAPI関連キーが4つ必要
①APIキー
②API Key Secret
③Access Token
④Access Token Secret

## プログラム
“`
$connection = new TwitterOAuth(①, ②, ③, ④);
$connection->setApiVersion(‘2’);

$response = $connection->get(‘users/by/username/yu_takashina’, [
‘user.fields’ => ‘profile_image_url,public_metrics’,
]);

// フォロー数
$response->data->public_metrics->following_count;

//

元記事を表示

Shifterの強みとハマりどころ

## Shifterとは

Shifterとは株式会社デジタルキューブが提供するWordPressを静的に活用できるSaaSサービスです。

Front Page

「Shifter Static」と「Shifter Headless」がありますが、私は「Shifter Static」の方を利用しました。

「Shifter Static」を平たく言うとWordPressはShifterの管理サービス上に閉じ込めてしまって、実際の一般エンドユーザはこのサービスから静的ファイルとして生成されS3に設置されたファイルをCloudFront経由で閲覧させるといったものです。

「Shifter Headless」の詳細は詳しくわかりませんが、microCMSなどを使ったときの構成と似たイマドキっぽいJamstackなサイトが作れそうですね。

:::note
デジ庁が色々とやってみた結果、脱Jamstackしたこと等とても共感が持てますし、[WordPressを扱うエンジニアに対する質問事項](https://qiita.com/koji-yamauchi/it

元記事を表示

OTHERカテゴリの最新記事