- 1. Stripe PHP SDK Connectの子アカウントの残高を取得する方法
- 2. Laravel開発をスムーズに!Blink Loggerで楽々デバッグ!
- 3. 独習PHP学習メモ(Chapter2-変数)
- 4. global命令, static命令
- 5. dokcer image buildでエラー吐いたのでubuntuを更新した。
- 6. Drupal開発するならやっておきたい3つのこと
- 7. 【Symfony】データを小分けに取得してバッチのメモリ使用量を減らす
- 8. 配列関数・4回目
- 9. 【PHP8.4】`$http_response_header`を取得する関数が実装される
- 10. PHP 入力フォーム値をDBに保存
- 11. PHP8技術者認定上級試験合格体験記
- 12. PDO トランザクション
- 13. サクッとS3からローカルにダウンロードする
- 14. PDO プリペアードステートメント プレースホルダ
- 15. 配列関数・3回目
- 16. Drupalでカスタムテーマを作ってみよう
- 17. PDOでデータベースと接続 (基本)
- 18. laravelでの静的ページカンタン生成
- 19. WordPressにおけるグローバル変数$postについて
- 20. 配列関数・2回目
Stripe PHP SDK Connectの子アカウントの残高を取得する方法
## 概要
StripeにてConnectの子アカウントの残高をPHP SDKを使って取得する方法を簡単にまとめる。
## 方法
下記のようにコードを書くことで残高を取得する事ができる。
“`php
$stripe = new \Stripe\StripeClient(“stripeのシークレットキー”);// 子アカウント(接続されたアカウント)のIDを指定
$connectedAccountId = ‘acct_から始まる子アカウントのID’;// 子アカウントの残高を取得
$balance = $stripe->balance->retrieve([], [‘stripe_account’ => $connectedAccountId]);echo $balance->pending[0]->amount; // まだ利用可能になっていない残高
echo $balance->available[0]->amount; // 利用可能になっている残高
“`## 参考文献
https://docs.stripe.com/api/balance/balan
Laravel開発をスムーズに!Blink Loggerで楽々デバッグ!
## Laravel Blink Logger
https://github.com/ucan-lab/laravel-blink-logger
– Laravel Blink Logger: v1.1.0 (記事公開時点)
– PHP: >=8.0.2
– Laravel: >=9.xLaravelのクエリー、リクエスト、レスポンス、HTTPクライアントのログを出力するライブラリを作りました。
「Blink」はまばたきを意味するので、まばたきするようにログ出力をオン/オフ切り替えできるイメージでライブラリを作りました。## 関連記事
この辺りの記事を元にライブラリを作りました。
https://qiita.com/ucan-lab/items/bfd15b096a916f811468
https://qiita.com/ucan-lab/items/7c81d568461d4026bd1b
https://qiita.com/ucan-lab/items/753cb9d3e4ceeb245341
https://qiita.com/ucan-lab/items/
独習PHP学習メモ(Chapter2-変数)
[PHP8技術者認定初級試験](https://www.phpexam.jp/summary/novice8, ‘PHP8技術者認定初級試験’)取得を目指しています🔰
公式の認定教材である[独習PHP第4版](https://www.amazon.co.jp/dp/4798168491/)での学習のアウトプット用の記事です。
## 命名規則
#### 「$名前」の形式であること
“`php:例
// 良い例
$name
$address// 悪い例
name
address
“`:::note warn
「$名前」のように変数名には日本語を含むこともできますが、慣例的に
**英数字、アンダースコアに限定**するのが良い。
:::#### 先頭は任意の文字かアンダースコアであること(数字はNG)
“`php:例
// 良い例
$_name
$data// 悪い例
$123
$1data
“`#### 名前の2文字目以降は数値を使用しても良い
“`php:例
// 良い例
$name1
$val1// 悪い例
$name-1
“`#
global命令, static命令
## はじめに
PHPのglobal命令, static命令に関して整理する。### global命令
ローカル変数を強制的にグローバル変数に割り当てる。
“`php:global.php
$x = 10;function checkScope() {
global $x;
return ++$x;
}print checkScope(); // 11
print $x; // 11
“`
### static命令静的変数を定義する。
“`php:static.php
function checkStatic() {
Static $x = 0;
return ++$x;
}print checkStatic(); // 1
print checkStatic(); // 2
print $x; // null
“`
dokcer image buildでエラー吐いたのでubuntuを更新した。
docker-imageを作成するべく
作業ディレクトリのサブにapacheディレクトリを作成し
その中にDockerfileを作成。“`Dockerfile
FROM ubuntsu:21.10RUN apt update \
&& apt install -y apache2CMD [“apachectl”, “-D”, “FOREGROUND”]
“`以上を$ dokcer image build -t practice/apachest:latest
すると
“`
2.933 Err:5 http://ports.ubuntu.com/ubuntu-ports impish Release
2.933 404 Not Found
3.233 Err:6 http://ports.ubuntu.com/ubuntu-ports impish-updates Release
3.233 404 Not Found
3.547 Err:7 http://ports.ubuntu.com/ubuntu-ports impish-back
Drupal開発するならやっておきたい3つのこと
この記事ではDrupalを使って開発作業をするならやっておくと良いことを紹介します。
# キャッシュの無効化
***キャッシュとはユーザーがアクセスしてページに表示された情報を一定期間覚えておくことでページの表示時間を早くする機能です。***Drupalではさまざまなキャッシュが効いているためテーマやモジュールを開発中に有効化していると、
「ソースコードを修正したのに反映されない」「設定を変更したのに反映されない」といったことが発生することがあります。そのため開発中はキャッシュを無効化することで開発作業を効率よくおこなうことができます。
## 設定手順
管理者権限を持つユーザーでログインし、
上部の管理者メニューの環境設定 > 開発 > 開発設定にアクセスします。
※<ドメイン>/admin/config/development/settings下図のような画面が表示されますので、
以下全てのチェック項目にチェックを入れて保存します。– Twig開発モード
– Twig debug mode
– Twigキャッシュを無効にする
– マークアップをキャッシュしない
【Symfony】データを小分けに取得してバッチのメモリ使用量を減らす
先日バッチのリファクタを行ったのですが、データ取得の方法を少し工夫してメモリ使用量を小さくすることができました。
色んな場面で活用できそうと思ったのでqiitaにメモしておきます。# 環境
開発環境: macOS Ventura v13.5.2
PHP: v8.1.13
Symfony: v5.4.11# 経緯
ユーザーへのメッセージの自動再送を行うバッチがあり、送信対象の件数が急増した際に設定したメモリ上限値を超えてOOM(Out Of Memory)エラーが発生してしまうことがありました。メモリ上限を引き上げる暫定対応を行ったのですが、今後送信件数が増加した場合に再発する可能性があったのでリファクタを実施しました。
修正前のバッチのデータ取得部分は以下のような実装になっていました(実際のコードと内容を一部変更しています)。
対象データを取得・関連エンティティを紐付ける:
“`php
/**
* @return ResendMessage[]
*/
public function getListByReservationTime(\DateTime $from,
配列関数・4回目
## はじめに
配列関数の整理。4回目。
### array_map
要素を取得・加工し新たな配列を生成する。
“`php:array_map.php
$data = [1, 2, 3];
$result = array_map(function ($v) { return $v * $v; }, $data);
print_r($result); // Array ( [0] => 1 [1] => 4 [2] => 9 )
“`### array_filter
配列の内容をコールバック関数で判定し、その中でtrueと判定された要素だけを取得する。
“`php:array_filter.php
$data = [‘フレンチブルドッグ’, ‘ヨークシャーテリア’, ‘ダックスフント’, ‘ポメラニアン’, ‘コーギー’];
$result = array_filter($data, function($v) {
return mb_strlen($v) < 8; }); print_r($result); // Array ( [2] => ダックスフント
【PHP8.4】`$http_response_header`を取得する関数が実装される
“`php
$dummy = file_get_contents(‘http://example.com’);var_dump($http_response_header); // ←なにこれ?
“`PHPには、[予め定義されている変数](https://www.php.net/manual/ja/language.variables.predefined.php)がいくつかあります。
有名どころとしては`$_REQUEST`・`$_SESSION`等の[スーパーグローバル変数](https://www.php.net/manual/ja/language.variables.superglobals.php)、PHPをコマンドライン実行した際に入ってくる[$argc・$argv](https://www.php.net/manual/ja/reserved.variables.argc.php)です。そしてそれ以外にひとつだけ特殊な変数があり、[HTTPラッパー](https://www.php.net/manual/ja/wrappers.http.php)を使うと
PHP 入力フォーム値をDBに保存
# `form.php`に入力した値をDBに保存するための準備
__●__ 以前に作成した、[form.php](https://qiita.com/takadayo/items/8bd1dac086e1d29da797) の `$pageFlag === 2`セクションにDB接続及びDB保存処理を実装するための準備をする
※ フォーム入力なのでDB保存には `prepare`, `bind`, `execute` を使う
しかし、 `form.php`の入力項目は全て文字列なので `execute(配列(全て文字列))` というように処理ができるので、`bind` は不要になる。__●__ DB接続には以前に作成した [db_connection.php](https://qiita.com/takadayo/items/3c1c5f7e4cdd08071a52) を読み込ませるようにする
## `insert.php`ファイルを作成及び編集
– まずはテストしてみる
“`php:insert.php
PHP8技術者認定上級試験合格体験記
# はじめに
先日、PHP技術者認定機構が実施しているPHP8技術者認定上級試験に、
1500満点の内1300点を取得して合格しました。PHP8上級/準上級試験合格!
PHP8技術者認定ウィザードをぎりぎり名乗れるようになりました#PHP試験 pic.twitter.com/XWD7LiMSxA— バキオ (@Bakio202076) March 30, 2024
PDO トランザクション
# PDO トランザクション `beginTransaction`, `commit`, `rollback` の3種類のメソッドを使用する
__●__ トランザクション: まとめて処理
– 参考: [PDOクラス](https://www.php.net/manual/ja/class.pdo.php)
– 使用されるシチュエーション例:
銀行ATM: 残高を確認->Aさんから引き落とし->Bさんに振込などこれらを全部まとめて処理をする(もし、何か問題があれば元に戻す)。“`php:index.php
beginTransaction(); // トランザクションを始めるtry {
// sql処理
$stm
サクッとS3からローカルにダウンロードする
# 概要
1個2個のファイルならともかく、20個以上のS3のファイルをサクッとローカルにダウンロードしたいということありませんか?私はありました。そんなときのための覚書。phpのペライチで実現。# 前提
プロダクトにs3のキーを持つテーブルがある、ないし別でs3のキー一覧を手元に持っていたとする# 事前準備
①VisualStudioCodeをインストール
②拡張機能、PHP Serverをインストール
これにより、ペライチのphpを簡単にブラウザで実行できる。業務効率化にめちゃ便利
③composerをインストール
④composerでaws-sdkをインストール
“`
composer require aws/aws-sdk-php
“`# コード
S3からキーを利用して、ローカルにファイルを落とす場合
“`php
PDO プリペアードステートメント プレースホルダ
## データベースのデータを表示させる
– `index.php`の作成及び編集
__●__ ユーザー入力がない場合(SQL文が決まっているパターンで毎回同じような表示をするような時)は query関数を使用 (PDOStatementクラス)
– 参考: [PDOStatement](https://www.php.net/manual/ja/class.pdostatement)
“`php:index.php
query($sql); // sql実行される$result = $st
配列関数・3回目
## はじめに
配列関数の整理。3回目。
### usort
標準的なソート関数では表現できない順序に基づいてソートする
“`php:usort.php
$keys = [‘十’, ‘百’, ‘千’, ‘万’, ‘億’, ‘兆’, ‘京’, ‘垓’, ‘秭’, ‘穣’, ‘溝’,
‘澗’, ‘正’, ‘載’, ‘極’, ‘恒河沙’, ‘阿僧祇’, ‘那由他’, ‘不可思議’, ‘無量大数’ ];$data = [‘那由他’, ‘京’, ‘垓’, ‘億’, ‘無量大数’ ];
usort($data, function($a, $b) use ($keys) {
return array_search($a, $keys) <=> array_search($b, $keys);
}); // [‘億’, ‘京’, ‘垓’, ‘無量大数’, ‘那由他’]
“`### array_walk
配列から順に要素を取得&処理する
“`php:array_walk.php
$data = [‘高江’ => ‘男’, ‘掛谷’ => ‘女’, ‘日尾’ =>
Drupalでカスタムテーマを作ってみよう
この記事ではDrupalでカスタムテーマを作成するやり方をご紹介します。
# Drupalにおけるテーマとは
DrupalにおいてテーマとはWEBサイトのページを構成する各要素のレイアウトや視覚的な見た目を定義するファイルの集合体です。このテーマには大きく分けて3つあります。
– コアテーマ
– コントリビュートテーマ
– カスタムテーマ## コアテーマとは
コアテーマとはDrupalインストール時にすでに使用可能となっているテーマのことです。
Drupal10では以下の3つが最初から使用できます。Olivero
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622183/0ad2e766-fe11-b308-40cf-e9c08a56b035.png)Claro
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622183/f9422829-b7b1-01f3-f00f
PDOでデータベースと接続 (基本)
# PDOクラスで接続する方法
– 参考: [PDO::__construct](https://www.php.net/manual/ja/pdo.construct) ※ 一番初めに呼ばれる
## `db_connection.php` を作成及び編集
“`php:db_connection.php
ge
laravelでの静的ページカンタン生成
“`php5:route/web.php
//必ず最後にかくこと
Route::get(‘{code}’, ‘PageController@page’);
“`“`php5:contoller
WordPressにおけるグローバル変数$postについて
WordPressにおけるグローバル変数 `$post` は、WordPressのループ中で現在処理している投稿(またはカスタムポストタイプ)のオブジェクトを指します。この変数はWordPressコアによって自動的に設定され、投稿の詳細な情報を含んでいます。例えば、投稿ID、タイトル、内容(コンテント)、投稿日時、スラッグなどが含まれます。
## グローバル変数 `$post` の役割
– 投稿データのアクセス:テンプレートファイルやプラグイン、テーマの関数内で、現在表示または処理中の投稿データにアクセスするために使用されます。
– テンプレートタグのコンテキスト: `the_title()`, `the_content()`, `the_permalink()` などのテンプレートタグは、 `$post` 変数からデータを取得し、現在の投稿に関連する情報を出力します。## どのように機能するか
WordPressのページを表示する際、メインのクエリ(WordPressループ)を実行して投稿データを取得します。このとき、ループの各イテレーションで `$post` 変数は現在の
配列関数・2回目
## はじめに
配列関数を整理する。2回目。
### array_search
特定の値を検索する“`php:array_search.php
$data = [‘PHP’, ‘Javascript’, ‘PHP’, ‘Java’, ‘C#’, ’15’];
$data2 = [‘X’ => 10, ‘Y’ => 20, ‘Z’ => 30];
var_dump(array_search(‘Javascript’, $data); //int(1)
var_dump(array_search(‘PHP’, $data); //int(0)
var_dump(array_search(‘Java’, $data); //bool(false)
var_dump(array_search(15, $data); //int(5)
var_dump(array_search(15, $data, true); //bool(false)
var_dump(array_search(10, $data2); //string(1) “X”
“`### in_array
要素の