- 1. PHPのstaticとは?
- 2. 【Laravel】特定のレコードを先頭に並べる方法!
- 3. Laravel 開発の効率を向上: あまり知られていない 5 つの Artisan コマンド
- 4. DockerでPHP8.2+MySQL8.0の環境を構築する
- 5. 【PHP next】PHPに静的コンストラクタが導入されるかもしれない
- 6. 【PHP】Spotify API使うまでの流れ
- 7. DockerでPHP+Apacheの環境を構築する
- 8. Laravel 11 とりあえずAPIサーバーを立ててみる。
- 9. 【個人開発】自分だけのベストアルバム一覧を作れるサービスを開発しました
- 10. Dockerを使ったLaravel8の環境構築
- 11. PHP技術者初級認定試験のための基礎振り返り③
- 12. PHP技術者初級認定試験のための基礎振り返り②
- 13. Docker CentOS7にPHP7.1+MySQL+Apache環境構築
- 14. PHP技術者初級認定試験のための基礎振り返り
- 15. 初めての個人開発と振り返り
- 16. Laravel の 404 エラーページでログイン状態が正しく表示されない問題の解決
- 17. 19個のLaravelパフォーマンス最適化必須テクニック
- 18. sentence-transformers を用いた情報検索システムについて
- 19. 【Wordpress】カスタム投稿をカテゴリーと投稿日で絞り込む機能を自作する
- 20. sendmailでサーバーと同じドメインのメールアドレスへのメール送信に失敗する場合の対応
PHPのstaticとは?
## はじめに
現場で使ったことのないstaticについて勉強したのでアウトプットです。
いろいろアドバイス、訂正など教えてください!## staticってなに?
staticを翻訳させると「静的」という意味になる。
確かにインスタンスを作ってインスタンス側で使うプロパティやメソッドに比べて
staticなプロパティやメソッドはクラス側で使うので動きは少ないが、、、初学者の自分からすると結構動いてない?「動的」じゃないの?って思ってしまう。
ただ上記にも書いてあるが明らかな違いとしては、
インスタンス側にあるプロパティやメソッドはインスタンス毎にそれぞれのプロパティやメソッドを持てるのに対し、
staticで使うプロパティやメソッドはクラス側に持っているのでインスタンスがいくら作られても、1つだけ存在するということ。#### 「インスタンス単位ではなく、クラス単位で値を保持する」時に使う。
## 動的と静的のコードの書き方の違い
定義↓
“`diff_PHP
【Laravel】特定のレコードを先頭に並べる方法!
こんにちは、泉([@izumin_0401](https://twitter.com/izumin_0401))です。
今回は、Laravelで特定のレコードを先頭に並べる方法を解説するよ!
# ブログ記事はこちら
https://traveler0401.com/laravel-partition-flatten/
# Laravelで特定のレコードを先頭に並べる方法
例えば、ユーザマスタがあって、IDが「0003」のレコードを先頭にしたい場合は以下。
“`php
$users = DB::table(‘mst_user’)
->orderByRaw(‘id’)
->get();return $users->partition(function ($user) {
return $user->id === ‘0003’;
})->flatten();
“`超スマート!!
# まとめ
ChatGPTに聞いたのは内緒だよ。# 最後に
暇つぶしに[Twitter](https://twitter.com/izumin
Laravel 開発の効率を向上: あまり知られていない 5 つの Artisan コマンド
![微信图片_20240923112940.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3893259/e9fc47da-0801-718e-a76f-640aec39bef3.png)
Laravelはその優れた文法と開発者に優しい機能で知られていますが、その強力なコマンドラインツールであるArtisanはさらにその価値を高めています。多くの開発者が一般的なArtisanコマンドに精通している一方で、開発効率を大幅に向上させることができるあまり知られていないコマンドもいくつかあります。この記事では、そのようなコマンドを5つ紹介し、どのようにワークフローを最適化できるかを探ります。
## 1. `php artisan event:generate`
Laravelのイベントシステムは、アプリケーションのさまざまなコンポーネントを分離して、より保守性と拡張性を高める強力な方法です。`event:generate`コマンドは、アプリケーション内で定義したイベントに基づいて、イベントクラスとリスナー
DockerでPHP8.2+MySQL8.0の環境を構築する
## はじめに
この記事では、DockerでPHP+Apache+MySQLの環境を構築し、DBから取得したデータをWebサーバー上で表示するまでの手順を紹介する。環境情報と、最終的なディレクトリ構造は以下の通り。
appディレクトリでPHP+Apacheのコンテナを、mysqlディレクトリでMySQLのコンテナを起動し、PHP側からMySQLに接続するイメージ。
| |環境情報 |
|—|—|
|PC |Apple M1 Pro |
|OS |Sonoma 14.4 |
|Docker |27.2 |
|PHP |8.2 |
|Apache |2.4 |
|MySQL |8.0 |“`terminal
docker_practice $ tree .
.
├── app
│ ├── Dockerfile
│ └── src
│ └── index.php
└── mysql
├── Dockerfile
├── data
└── init.sql5 directories, 4 files
【PHP next】PHPに静的コンストラクタが導入されるかもしれない
静的コンストラクタとは、[C#では静的コンストラクタ](https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/static-constructors)、[Javaでは静的イニシャライザ](https://qiita.com/b1ueskydragon/items/2a6e0812a9cee3fc255f)、[KotlinではCompanion objects](https://kotlinlang.org/docs/object-declarations.html#companion-objects)と何故か言語ごとにバラバラの名前で呼ばれている機能です。
実は細かい違いがあるのかもしれませんがよくわかりません。“`java:Java
public class Hoge{
static {
System.out.println(“hoge”);
}
}
“`このメソッドは、このクラスを初めて使おうとしたときに最大一回だけ実行されます。
使おう
【PHP】Spotify API使うまでの流れ
## 概要
Spotify APIを使用して色々な楽曲のデータなど取得するための手順をまとめました。API叩いてデータを取得するところまでが今回のゴールになります。
## 対象者
– PHP使っている方
– Dockerを使用している方
– APIからデータ取得してみたいという方## 手順
### 準備
#### 準備1. アカウントIDとキーを確認する:pick:
Spotify APIを使用する際にはアカウントを登録する必要があります。
(フリープランでもOK!)
登録後、[開発者用ダッシュボード](https://developer.spotify.com/)にアクセスしてIDとキーを取得します。
※このIDとキーが肝です。
![スクリーンショット 2024-09-23 135758.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877267/2d70cfb7-f271-65f8-43b3-a95d8560b6b3.png)
App nameとか色々と入力する項目があるかと思いますが
DockerでPHP+Apacheの環境を構築する
## はじめに
この記事では、Docker環境を構築するための準備から、PHP+ApacheのWebサーバー上で`”Hello World!”`を表示するまでの手順を紹介する。| |環境情報 |
|—|—|
|PC |Apple M1 Pro |
|OS |Sonoma 14.4 |
|Docker |27.2 |
|PHP |8.2 |
|Apache |2.4 |## 1. Docker Desktopをインストールする
(1) [公式サイト](https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/)からDocker Desktop for Macをダウンロードし、Applicationsフォルダに追加する。
Laravel 11 とりあえずAPIサーバーを立ててみる。
バックエンドを人に任せているが、せめてAPIだけでも使えるようになってないとフロントエンド開発しにくいなあと言うことで、簡易的にAPIサーバーを立てて値の取得することに。
とりあえずGET前提で試してみる。
## 一応環境
Laravelバージョン 11
php 8系## プロジェクト作成
“`shell
laravel new api-server
“`
## Controller作成
今回はApiControllerという名前で作成する。“`shell
php artisan make:controller ApiController
“`
app/http/controllers/ApiController.phpが作成される。## メソッド作成
ApiControllerを開いてメソッドを追加する。
“`php
public function apitest(){
return response()->json([‘message’ => ‘hello world!’]);
}
“`
## ルート設定
routeにapi.phpを新規作成す
【個人開発】自分だけのベストアルバム一覧を作れるサービスを開発しました
### 概要
今まで聴いてきた音楽の中から「自分だけのベスト10」をアルバムアートを表示しつつ一覧にできるサービスを作成しました:v::headphones::headphones:個人的に使うだけなのでリンクは特に掲載しません。
実際に使用しているキャプチャも最後まで載せたいところですが、アルバムアートは著作権的にアウトだと思いますので、途中までになります。
![3capture.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877267/c1d21ae9-4f28-8a70-4144-dd66f73c498d.gif)実際にはこのあとアルバム一覧が表示→アルバムを選択したらアルバムアートが一覧で表示できます。
### 開発背景
友人とよく「◯◯ベスト10」というような話をします。ゲームだったり映画だったり…
それぞれの好きなものがわかりますし、色んな視点を聞くことができるので個人的にはすごく楽しい話題だと思っています。
この話をするときに視覚的な情報も一緒にあるとよりイメージつきます
Dockerを使ったLaravel8の環境構築
# やりたいこと
– Docker 及び Compose のインストールをしたい
– Docker を起動したい
– 起動した Docker 上で localhost のサーバーを立ち上げたい# 前提
– OS
– macOS Sonoma 14.6
– 各バージョン
– PHP 8.2.10
– Laravel8
– Laravel8 のプロジェクトは作成済み
– 参考:https://qiita.com/s-y0001/items/60d9ee491264486b7454#%E5%89%8D%E6%8F%90# Docker Desktopのインストール
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/私の場合は「IntelチップのMac」からDocker.dmgをダウンロードし、インストール手順を実施しました。
インストールが完了しアカウント登録まで済むと Docker Desktop の起動に成功します。ちなみに、Docker Desk
PHP技術者初級認定試験のための基礎振り返り③
# ファイル操作
**1. ファイルの読み込み**
PHPでは、fopen、fread、fgets、file_get_contentsなどの関数を使用してファイルを読み込むことができます。file_get_contents
file_get_contents関数は、ファイル全体を文字列として取得します。
“`
“`
**2. ファイルの書き込み**
ファイルにデータを書き込むには、fopen、fwrite、file_put_contentsなどの関数を使用します。file_put_contents
file_put_contents関数は、ファイルにデータを書き込みます。ファイルが存在しない場合は新しく作成し、既存のファイルがある場合は上書きします。
“`
PHP技術者初級認定試験のための基礎振り返り②
# 文字列操作
**1. 文字列の結合**
PHPでは、文字列の結合にドット演算子(.)を使用します。
“`
“`
**2. 文字列の長さを取得する**
strlen関数を使うと、文字列の長さを取得できます。
“`
“`
**3. 部分文字列を取得する**
substr関数を使うと、文字列の一部を抽出できます。
“`
“`
**4. 文字列の検索と置換**
文字列の中の特定の部分を検索したり、置換したりするためにstrposと
Docker CentOS7にPHP7.1+MySQL+Apache環境構築
## 概要
Dockerでタイトルの環境を構築する設定ファイルを残しておく。
CentOS7上に構築すると躓くところが多かった…## 環境
– OS
– CentOS 7
– 言語
– PHP 7.1.
– DB
– MySQL 8.0.32## 設定ファイル
### docker-compose.yaml
“`docker-compose.yaml
services:
mysql:
image: mysql:8.0.32
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_PORT: 3306
ports:
– 3307:3306
volumes:
– type: volume
source: mysql_data
target: /var/lib/mysql
– type: bind
PHP技術者初級認定試験のための基礎振り返り
# PHPとは何か
PHPは「Hypertext Preprocessor」の略で、動的なウェブページを生成するためのサーバーサイドスクリプト言語です。PHPはHTMLに埋め込んで使用でき、データベースと連携することで、インタラクティブなウェブアプリケーションを作成することが可能です。# PHPの基本構文
***1. PHPタグ***
PHPコードはの間に記述します。以下は基本的なPHPタグの例です。
“`
“`
**2. 変数とデータ型**
PHPでは、変数は$記号で始まります。変数に値を代入することで使用します。PHPの主なデータ型には以下のようなものがあります。整数型 (integer): 整数値を扱います。
浮動小数点型 (float): 小数点を含む数値を扱います。
文字列型 (string): 文字列を扱います。
配列型 (array): 複数の値を一つの変数に格納します。
ブール型 (boolean): trueまたはfalseの値を持ちます。
例:
“`
初めての個人開発と振り返り
# はじめに
約2ヶ月の制作期間を経て、Webアプリケーションのデプロイがひとまず完了しました。
今年の7月中旬からプログラミングスクールに通い、PHPやLaravelといった技術を習得しながら進めたプロジェクトです。私はもともとWeb系言語未経験で、個人開発の経験もありませんでした。そのため、成果物を完成させるためには、疑問が生じた際にすぐに質問できる環境が必要だと感じ、プログラミングスクールに通うことを決意しました。
この記事では、自分の理解を深めるためにも、今回の成果物であるWebアプリケーションについて紹介します。制作過程で学んだことや、直面した課題とその解決方法についても触れていきたいと思います。
# 目次
1. [自己紹介](#自己紹介)
2. [アプリケーション概要](#アプリケーション概要)
3. [使用技術](#使用技術)
4. [制作過程と内容](#制作過程と内容)
5. [振り返り](#振り返り)
6. [おわりに](#おわりに)# 自己紹介
地方国立大学院工学専攻情報系修士1年
プログラミングに関わる経歴
– 大学の講義にてJava、Python、S
Laravel の 404 エラーページでログイン状態が正しく表示されない問題の解決
## 問題の発生
Laravel 10 で構築されたプロジェクトにおいて、未定義のルートにアクセスした際に 404 エラーページへ遷移する際、ログイン状態が正しく表示されない問題が発生。
具体的には、ログインしているにも関わらず、セッションが開始されていなかった。## 結論
フォールバックルートで対応できました。
“`php
Route::fallback(function () {
abort(404);
});
“`## 原因の調査
この問題は、404 エラーが発生した際に、`StartSession` ミドルウェアが実行されず、セッションが開始されないことが原因でした。
`StartSession` ミドルウェアは、通常、`web` ミドルウェアグループに含まれており、定義済みのルートにアクセスした際には実行される。
しかし、未定義のルートにアクセスした場合は、`web` ミドルウェアグループが適用されないため、セッションが開始されない。## 解決策の検討
### 1. 例外ハンドラでの対応
当初は、例外ハンドラ (`app/Exceptions/Ha
19個のLaravelパフォーマンス最適化必須テクニック
この記事では、Laravelアプリケーションのパフォーマンスを大幅に向上させるための19のテクニックを詳しく探ります。以下にそれぞれのテクニックを説明します。
![20240918152752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884228/25f43d2d-3eac-b3cf-4621-60519f6d03a5.png)### 開発環境ツールを導入する
ServBayは、開発者のために設計された一体型開発環境管理ツールで、開発環境の構築と維持を簡素化します。PHP、Node.js、MariaDB、PostgreSQLなどの多くの人気開発言語やデータベースを統合しており、開発者はプロジェクトのニーズに応じて適切な技術スタックを柔軟に選択できます。このツールは、ローカル開発でカスタムドメインやトップレベルドメイン(TLD)を使用することをサポートし、これらのドメインに自動的に無料のSSL証明書を生成することで、開発プロセスの安全性を高めます。Laravelプロジェクトのデプロイニー
sentence-transformers を用いた情報検索システムについて
### 開発の動機
社内の規則などを記述した PDF のドキュメント群があり、それを一括して検索できるシステムを作ろうと考えた。
### 処理の手順
#### イントラウェブサイトから PDF ファイルを DL する工程。
今回、ウェブロボットのように、あるドキュメントからその中のリンクをたどって新しいドキュメントをダウンロードすることはしない。与えられた複数の URL の PDF ドキュメントを毎日ダウンロードする。
#### PDF をテキストファイルに変換する工程。
ダウンロードした PDF ファイルをテキストファイルに変換するのには、pymupdf を使う。
#### 変換したテキストファイルを sentence-transformers に読みこませる文章にする工程。
変換したテキストファイルは、一行が文章であったり、言い回しで完結するとは限らない。そこで、PDF から変換したテキストファイルを、spacy と ja-ginza を用いて、一行が文章になるように修正する。
#### テキストファイルを sentence-transformers に読み込ま
【Wordpress】カスタム投稿をカテゴリーと投稿日で絞り込む機能を自作する
## 完成イメージ
投稿日とカテゴリー2つの条件で投稿を絞り込むことができます。
それぞれ片方でも、両方の条件で複合的に絞り込むこともできます。![画面収録 2024-09-15 19.42.56 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3783222/caed83b4-22bf-e139-b8ef-7acf59a1f272.gif)
## 実装のポイント
wordpressを多少理解できている前提で、この実装の肝となるポイントを先にご紹介します。– **サブクエリに「“`date_qeury“`」と「“`tax_query“`」という2つの条件を設定する**
– **検索ボタンを押した際に、GETメソッドで上記2つのクエリに必要な投稿日とカテゴリーの情報をURLパラメータから取得する**## 前提条件・準備
– 実装する検索機能についてはプラグインを使用せず自作する
– カスタム投稿、カスタムタクソノミーはAdvanced Custom Fieldsを使用
sendmailでサーバーと同じドメインのメールアドレスへのメール送信に失敗する場合の対応
# 状況
Webサーバー`yukihirog.jp`に設置したPHPからsendmailを経由して`mail@yukihirog.jp`にメール送信すると失敗してしまう。
しかし、`mail@anotherdomain.com`など、**他のドメインのメールアドレスへのメール送信は成功**する。
そのため、**サーバーと同じドメインへのメール送信のみが失敗**していると考えられる。
また、`/var/log/maillog`に`User unknown`が記録されていた。
(以降、`yukihirog.jp`の部分は自分のドメインに読み替えてください)
# 原因
メール送信時、設置サーバーと同じドメインの場合は外部を経由せずに自サーバー内で解決されるらしい。
**実際のメールサーバーをGメールなどで運用している場合**、自サーバー内を探しても配信先が見つからずに失敗、あるいは見つかってもユーザーが利用しているアプリなどに**届かない**ことになる。
# sendmailの確認
“`shell:sendmailが入っているかの確認
which sendmail
#