- 1. PHP-MAMP(パッケージソフトウェア)
- 2. PHPでサポートされている文字エンコーディングについて
- 3. 【覚書き】PHPフレームワーク「Flow」におけるインターフェースをDIしたときの挙動について
- 4. タイムアウトが頻発して泣きを見た話
- 5. 画像やCSSを先読み、”WebLink”
- 6. Symfonyユーザー認証機能の実装について簡単に紹介!
- 7. 【PHP】文字列連結 「結合演算子 vs 変数展開」
- 8. そうだ、年末大掃除にAIを取り入れよう
- 9. PukiWikiローカルサーバ環境構築(php/XAMPP導入手順 )
- 10. PHPを使ってオリジナルアプリからChatGPT APIを利用してみた
- 11. PHP ぼやき日記 2023-12-12
- 12. 【Xdebug】Docker × IntelliJ IDEAでXdebugを利用してデバッグを行う
- 13. 【Linux】サーバーのPHPバージョンを変えたのに反映されていない場合の解消方法
- 14. 最近のSymfonyの依存性注入まとめ
- 15. SpotifyのAPIを使ってみる
- 16. 処理をロック、”Lock”
- 17. PHP Stripe SDK 連結アカウントに口座を登録する(実装コード無し)
- 18. 【PHP】Null合体演算子とNull合体代入演算子ってなに?
- 19. googleads/googleads-php-lib でサンプルが動かなくて悩んでるあなたへ
- 20. PHPの filter_var 関数の使用方法と応用
PHP-MAMP(パッケージソフトウェア)
MAMPでサーバー構築、種類別の特徴について。
・MAMP(Mac、Apache、MySQL、PHP):
対象プラットフォーム: 主にMac OSに対応しています。
コンポーネント:
Apache: ウェブサーバー
MySQL: データベースサーバー
PHP: サーバーサイドスクリプト言語・XAMPP(クロスプラットフォーム、Apache、MySQL、PHP、Perl):
対象プラットフォーム: クロスプラットフォームで、Windows、Mac、Linuxなど、複数のオペレーティングシステムで利用可能です。
コンポーネント:
Apache: ウェブサーバー
MySQL: データベースサーバー
PHP: サーバーサイドスクリプト言語
Perl: 汎用のスクリプト言語・LAMP(Linux、Apache、MySQL、PHP/Python/Perl):
対象プラットフォーム: 主にLinuxに対応していますが、他のプラットフォームでも構築可能です。
コンポーネント:
Apache: ウェブサーバー
MySQL: データベースサーバー
PHP/Python/Perl: サーバーサイド
PHPでサポートされている文字エンコーディングについて
# 概要
PHPでサポートされている文字エンコーディングについてまとめていこうと思います。
> ※PHP8.2時点での仕様となります。
# サポートされる文字エンコーディングについて
[サポートされる文字エンコーディング](https://www.php.net/manual/ja/mbstring.supported-encodings.php) で一覧を確認できますが、エイリアスも存在するためマニュアルでは一覧で確認することができないです。
下記の関数を組み合わせると一覧を確認することができます。
– [mb_list_encodings](https://www.php.net/manual/ja/function.mb-list-encodings.php)
– [mb_encoding_aliases](https://www.php.net/manual/ja/function.mb-encoding-aliases.php)## 非推奨となった文字エンコーディング
PHP8.2以降では「`QPrint`, `Base64`, `Uuencode`, `H
【覚書き】PHPフレームワーク「Flow」におけるインターフェースをDIしたときの挙動について
# 初めに
最近PHPのマイナーフレームワークFlowを触っているのですが、インターフェースをDIしたときの挙動について気になることがありました。
いろいろ調べてみたので分かったことをアウトプットします。# DIしたインターフェースのメソッドを呼び出すとどうなる?
Flowのソースを見てると、以下のようにDIしたインターフェースのメソッドを呼び出すような処理がありました。
“`php
class Hoge {
/**
* @Flow\Inject
* @var \Neos\Welcome\Service\Interface\FugaInterface
*/
protected $fugaInterface;public function hogeMethod()
{
$this->fugaInterface->fugaMethod()
}
}
“`最終的に“`fugaMethod()“`を呼び出していますが、“`$fugaInterface“`はインターフェースのため
タイムアウトが頻発して泣きを見た話
こんにちは。[CYBIRD Advent Calendar 2023](https://qiita.com/advent-calendar/2023/cybird) 13日目担当の[@cy-seiyan](https://qiita.com/cy-seiyan)と申します。
12日目は[@cy-naull](https://qiita.com/cy-naull)さんによる「[面倒な手作業をPythonに任せる](https://qiita.com/cy-naull/private/e693fcd53a835c247fa9)」でした。
自動化、本当に大切ですね。全て自動化してしまえば手作業で行ってた時間を別の事に使えますしメチャクチャ捗りますね。## 自己紹介
私は2018年にサイバードに入社をし、主にイケメンシリーズのサーバサイドエンジニアとして活動をしております。直近ではイケメンシリーズの1タイトルでサーバサイドだけでなく入社以前より業務経験を積みたかったUnityを使用したクライアントサイドも担当し某スポーツ選手の如く二刀流のエンジニアを目指しイケメンシリーズを支えております。
画像やCSSを先読み、”WebLink”
[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の13日目の記事です。
## 画像やCSSを先読み、”WebLink”
[WebLink](https://symfony.com/doc/current/web_link.html)は、HTTP/2 Server PushやResource
Hintsを使って、画像を事前にロードできるコンポーネントです。HTML部分に影響があるので[Twig](https://qiita.com/ippey_s/items/a81cf9980ed0f8c63a3e)が必要です。※ [Resource Hints](https://qiita.com/ohakutsu/items/9b8d4ca39d23774c2e5a)について
※ [HTTP/2 Server Push](https://blog.redbox.ne.jp/http2-server-push-cdn.html)について##
Symfonyユーザー認証機能の実装について簡単に紹介!
[Symfony Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony) の13日目の記事です🎄✨
今回の記事では「Syfmonyでユーザー認証機能の実装」について紹介します!
## この記事のゴール
ユーザー認証の機能実装ができるというところを目指します!
## 1. 環境
– PHP:`v8.2.12`
– Symfony:`v7.0.1`
– MySQL:`v8.0.33`## 2. 作成済みリポジトリ
https://github.com/mako5656/202312-symfony-user-certification
## 3. ユーザー認証機能の実装について
### 3-1. プロジェクトの作成/設定
– 新規プロジェクト作成
“`
symfony new [プロジェクト名]
“``symfony server:start`して`https://127.0.0.1:8000`を開いたときに下記画面であれば無事作成できてます!
![スクリーンショット
【PHP】文字列連結 「結合演算子 vs 変数展開」
この記事は [PHP Advent Calendar 2023](https://qiita.com/advent-calendar/2023/php) 7日目の記事です。
## はじめに
PHPで文字列連結をすることって頻繁にありますよね。
あなたは意図した使い分けが出来ていますか?### 1. 結合演算子
“`php
$lang = ‘PHP’;
$job = ‘エンジニア’;echo $lang . $job;
// 出力結果
// PHPエンジニア
“`
いわゆる「ドットつなぎ」ですね。
### 2. 変数展開
“`php
$lang = ‘PHP’;
$job = ‘エンジニア’;echo “{$lang}{$job}”;
// 出力結果
// PHPエンジニア
“`
詳しくは[公式ページ](https://www.php.net/manual/ja/language.operators.string.php)へ。## それでは本題に入ります
今回は、文字列連結のパフォーマンスについて実験を行います。
噂に
そうだ、年末大掃除にAIを取り入れよう
こんにちは。medibaでバックエンドエンジニアをしている@yyyです。
本記事は [mediba Advent Calender 2023](https://qiita.com/advent-calendar/2023/mediba) の13日目の記事です。## 年末大掃除をAIに手伝ってもらいませんか?
皆さんこんにちは、もう年末ですね。お部屋の隅々まで掃除は進んでいますか?
もし「まだ…」という方、今回はあなたの大掃除に猫の手を。## 今どきの断捨離はメルカリ、だけど…
メルカリの出品フローを見てみましょう
1. 写真の撮影
2. 商品のタイトルを書く
3. 商品の説明文を書く
…これってAIが成長を続ける今なら簡略化できるのでは?
## OpenAI (ChatGPT) が写真の認識をできるように
OpenAIは画像に含まれる情報を解釈し理解できる画像認識に特化したモデルを一般公開しました
参考:https://platform.openai.com/docs/guides/visionこれをつかって断捨離したいものからタイトルや説明文を考えてもらお
PukiWikiローカルサーバ環境構築(php/XAMPP導入手順 )
# PukiWikiとは?
公式サイトより
> A. 通称「Wiki」(正しくは:WikiWikiWeb)と呼ばれているツールの一つです。自前サーバーやレンタルサーバー等でも運用可能なツールです。
xサーバーは簡単にインストール出来る様な仕組みもあります。今回は開発環境を整えたいので、ローカル環境にPukuWikiをインストールしてみました。
# 開発環境
Windows10 Home
XAMPP(v3.3.0)
PukiWiki(v1.5.4)
PHP version 8.1.20### XAMPPを導入
https://www.apachefriends.org/jp/index.html
上記サイトからWindows向けのインストーラーをダウンロードしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3028739/7d7338ab-2716-bc4b-94b9-896f3cebf51a.png)
![image.png](https://qi
PHPを使ってオリジナルアプリからChatGPT APIを利用してみた
# 内容
ChatGPT APIを使って、簡単なアプリからChatGPTと連携してみたいと思います
# 目次
– [APIキーの取得](https://qiita.com/shogo30/items/a9f8d7d4fbd3574c9009#api%E3%82%AD%E3%83%BC%E3%81%AE%E5%8F%96%E5%BE%97)
– [PHPを使ってChatGPTと連携する](https://qiita.com/shogo30/items/a9f8d7d4fbd3574c9009#php%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6chatgpt%E3%81%A8%E9%80%A3%E6%90%BA%E3%81%99%E3%82%8B)
– [エラーでうまくいかない時](https://qiita.com/shogo30/items/a9f8d7d4fbd3574c9009#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8B%E3%81%A
PHP ぼやき日記 2023-12-12
– Qiita ガイドライン的にはスレスレな気もしつつ、まあ絶対に日記を書いてはアカンということもないと思うので、試しに日記というか継続的殴り書きをやってみる
– 毎日やるぞみたいな意気込み感はあまりないし、飽きたり疲れたりしたらやめるし、書く余裕がないくらい忙しい時は書かない# PHP_CodeSniffer (phpcs) の 3.8.0 が出た
– https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/tag/3.8.0
– phpcs の現状は [The Future of PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer/issues/3932) の通り
– 17 年メンテしてきた Greg のひとが引退して jrfnl のひとがメンテナをやってくことに
– リポジトリは squizlabs/PHP_CodeSniffer から PHPCSStandards/PHP_CodeSniffer に移行
– packagist のパッケージの
【Xdebug】Docker × IntelliJ IDEAでXdebugを利用してデバッグを行う
IntelliJ IDEAで、Docker上のプログラムをXdebugを使ってデバッグする方法を紹介します。
環境構築は複数のサイト様にお世話になりましたが、チュートリアル的な資料が欲しくなったので自分で作ってみました。
これがあればとりあえず動かせるぞ!という設定をまとめました。対象は簡単な生PHP(メイン処理・1クラス)のみです。
デバッグはIntelliJ IDEA上、ブラウザ経由の両方で可能です。# 動作環境
– macOS Ventura 13.6.1
– Docker Desktop 4.25.2
– IntelliJ IDEA Ultimate 2023.2.5
– Google Chrome 119.0.6045.199(Official Build)# 目的
IntelliJ IDEAで、Docker上のプログラムをXdebugを使ってデバッグする。# Dockerコンテナの作成
検証用のDockerコンテナを作成します。## ディレクトリ構成
“`bash
.
├── Dockerfile
├── docker-compose.yml
├──
【Linux】サーバーのPHPバージョンを変えたのに反映されていない場合の解消方法
# はじめに
レンタルサーバーの管理画面でPHPのバージョンを指定したのに、SSHした環境では設定したPHPが反映されていなかったことがありました。
SSHした環境でもPHPのバージョン設定を反映させるやり方をご紹介します。# 環境
* レンタルサーバーはロリポップ
* 管理画面ではPHP8.1を設定したが、SSH環境ではPHP8.0が適用されている# 事象
composerを使ったときにPHPバージョンが8.1以上でないため実行できないことがありました。
管理画面ではPHP8.1を設定したから問題ないはず・・・。
“`bash
$ composer require drupal/admin_toolbar drupal/devel drupal/devel_kint_extras drupal/shield drupal/restui drupal/eva
Using version ^3.4 for drupal/admin_toolbar
Using version ^5.1 for drupal/devel
Using version ^1.1 for drupal/
最近のSymfonyの依存性注入まとめ
[Symfony Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony)の12日目です。
最近のSymfonyの依存性注入の進化がやばいの、知ってましたか?Symfony6.3からなんかすごいです。まとめてみましょう。
## パラメータのオートワイヤリング
今までSymfonyはクラスやインターフェイスの注入はオートワイヤリング(自動注入)の恩恵を受けて、設定せずともオブジェクトが注入されていましたが、パラメータなどの文字列や数値はオートワイヤリングできなかったので、設定する必要がありました。
“`yaml:config/services.yaml
parameters:
app.year: 2024services:
App\Service\SomeService:
arguments:
$year: ‘%app.year%’
$month: ‘%env(APP_MONTH)%’
“`“`php:
SpotifyのAPIを使ってみる
本記事は、[めんどい太郎の Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mendoitarou_first_calendar) 12日目の記事です。
# はじめに
この記事は初心者が書いています。
皆さんはSpotify、使ってますか?
私は以前Spotifyを使っていました。
今回はSpotifyのAPIを使ってみようと思います。
Spotifyもドキュメントがわかりやすいので、読むのをおすすめします。
なんなら、ここで試すこともできます。
https://developer.spotify.com/documentation/web-api
:::note alert
この記事で紹介するコードは不完全であり、テストのためにセキュリティ面を考慮してない実装があります。
:::# SpotifyのAPI
SpotifyのAPIでは楽曲の検索やプレイヤーの操作など様々なことができます。
個人的にはプレイヤーの操作が気になります。
それでは早速使ってみましょう。
# 試す
## アプ
処理をロック、”Lock”
[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の12日目の記事です。
## 処理をロック、”Lock”
[Lock](https://symfony.com/doc/current/components/lock.html)は、ある処理を重複して実行させない(排他処理)ようにします。Symfony以外でも使えます。
### インストール
“`shell
composer require symfony/lock
“`### 使い方
`LockFactory`オブジェクトを使り、`createLock(‘{ロック名}’)`メソッドを実行してロックオブジェクトを取得します。’acquire()`メソッドでロックが取得できればtrueを返します。falseを返せば他で処理が実行されているということになります。
“`php
use Symfony\Component\Lock\LockFactory;
use Symfon
PHP Stripe SDK 連結アカウントに口座を登録する(実装コード無し)
## 概要
laravel-cashierというライブラリとstripe-php(SDK)を駆使してStripeの顧客の口座を登録する方法をまとめる。
## 選定
– stripeの登録が完了しており、ブラウザからテスト環境にログインできること。APIキーが確認できていること。筆者は下記の方法で実施済み。
https://qiita.com/miriwo/items/01cac1cab4133ebd0d9a
## 注意
送金先として銀行口座を設定する場合、Stripeの「顧客」に送金用の口座を紐付けることはできない。
送金したい場合はStripeのConnectというサービスを使って、送金対象のユーザーを連結アカウントとしてStripeに登録する必要がある。## 処理の流れ
下記のような流れで処理を行う。(口座の登録方法は「フロントエンドからStripe.jsを使ってリクエストを投げてもらい、レスポンスの口座情報トークンをlaravelのAPIに投げてもらう方法」と「laravelから平文の口座情報を投げる方法がある。」バックエンドのログに口座情報を残したくないので今
【PHP】Null合体演算子とNull合体代入演算子ってなに?
# はじめに
今回は、Null合体演算子とNull合体代入演算子について、まとめました。※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。# この記事の目的
Null合体演算子 `??` を調べていると、Null合体代入演算子 `??=` を知ったため、アウトプットします。# この記事の対象者
– PHPを学習されている初学者の方
– `??` って何?となっている方# この記事の内容
1. `??` Null合体演算子(Null coalescing operator)
2. `??=` Null合体代入演算子(Null coalescing assignment operator)
3. 挙動の確認# 1. `??` Null合体演算子(Null coalescing operator)
https://www.php.net/manual/ja/language.operators.comparison.php#language.operators.comparison.coalesce
googleads/googleads-php-lib でサンプルが動かなくて悩んでるあなたへ
https://developers.google.com/ad-manager/api/start?hl=ja#php
Googleのドキュメントを読んで簡単そうだと思ったら要注意。必ず罠があります。Googleのあくらつなライフハック。
ステップ2まではUIがアップデートされているので説明文と画面の乖離があって若干わかりづらいですが、まあ大丈夫。jsonファイルのダウンロードまでがんばってください。
次、ステップ3ではやらなければいけないことがヌケています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13435/1d1e3a4b-ff9e-9b31-0874-e7b9e41a9c8b.png)
「サービスアカウントユーザーを追加」
を押して、ユーザー追加をしてください。メールアドレスはさっきダウンロードしたサービスアカウントjsonのclient_emailをメールアドレスとして入力します。役割は「管理者」です。
“`
$ composer require goo
PHPの filter_var 関数の使用方法と応用
# 基本的な使い方
filter_var 関数はPHPで提供される非常に便利な機能で、様々なタイプのデータを検証およびサニタイズするために使用されます。“`
mixed filter_var(mixed $variable, int $filter = FILTER_DEFAULT, mixed $options = 0)
“`* $variable : フィルタリングする変数。
* $filter : 使用するフィルタFILTER_VALIDATE_EMAIL,FILTER_VALIDATE_BOOLEAN などがあります。
* $options : フィルタに追加のオプションを指定するための連想配列またはビットフィールド。# 応用例
## メールアドレスの検証
“`
filter_var(‘user@example.com’, FILTER_VALIDATE_EMAIL)
“`
## 真偽値の検証
“`
filter_var(‘true’, FILTER_VALIDATE_BOOLEAN)
“`
※注意点として、文字列の’yes’はtrueになり、’no’は