- 1. 「print_r」、「 var_dunp」、「 echo」の違いを復習してみた
- 2. [PHP] 条件演算子 – 三項演算子とnull合体演算子
- 3. 【PHP】ライブラリを公開する方法
- 4. ファイルシステム関数
- 5. Stripe PHP SDK Connectの子アカウントの残高を取得する方法
- 6. Laravel開発をスムーズに!Blink Loggerで楽々デバッグ!
- 7. 独習PHP学習メモ(Chapter2-変数)
- 8. global命令, static命令
- 9. dokcer image buildでエラー吐いたのでubuntuを更新した。
- 10. Drupal開発するならやっておきたい3つのこと
- 11. 【Symfony】データを小分けに取得してバッチのメモリ使用量を減らす
- 12. 配列関数・4回目
- 13. 【PHP8.4】`$http_response_header`を取得する関数が実装される
- 14. PHP 入力フォーム値をDBに保存
- 15. PHP8技術者認定上級試験合格体験記
- 16. PDO トランザクション
- 17. サクッとS3からローカルにダウンロードする
- 18. PDO プリペアードステートメント プレースホルダ
- 19. 配列関数・3回目
- 20. Drupalでカスタムテーマを作ってみよう
「print_r」、「 var_dunp」、「 echo」の違いを復習してみた
ようやく今月でエンジニア歴1年になりました。
1年目は簡単な個人開発ばかりやって基礎固めをさぼってしまい、最近の業務で色々躓くことが多くなってきたので今年は基礎固め、応用全部頑張りたいと思います。## print_r、var_dunp、echoの違い
それぞれ出力したい値によって使い分ける。
それは分かってるんだけどもどうやって分けるんだ…と言う感じだったので後で見返せるように自分用に、それぞれの特徴と用途をまとめてみました。## print_r()
– 配列やオブジェクトの内容を出力する
– デバッグ時に変数の内容を確認したいに使う
– 型情報は提供されないので、bool値やnullのような型は出力されない場合がある
– 配列やオブジェクトの構造を確認したいときに使うと良い“`
$num = [10,20,30,40,50];
$print_r($num);
“`
print_r()はvar_dump()が使えなかったデバッグ環境で重宝していた気がします。
個人的推し。:crab:実際に書いてたコード↓
“`
$serializedData = serializ
[PHP] 条件演算子 – 三項演算子とnull合体演算子
## この記事の目的
条件演算子である**三項演算子**と**null合体演算子**の使い方を理解する。## 本題
### 1. 三項演算子
早速ですが、以下の簡単な if 文を見て下さい。“`php
// テスト結果が合格が不合格かを取得する関数
function get_exam_result($point)
{
if ($point >= 60) {
return “合格です”;
} else {
return “不合格です”;
}
}echo get_exam_result(78); // “合格です”
echo get_exam_result(40); // “不合格です”
“`このような単純なif文は、**三項演算子**を使ってもっとシンプルに記述できます。
“`php
// 三項演算子を使ってシンプルに記述
// テスト結果が合格が不合格か取得する関数
function get_exam_result($point)
{
return $point >= 60 ? “合格
【PHP】ライブラリを公開する方法
# はじめに
初めまして。エンジニアのkeita_Maxです。
今回は、以下のサイトの手順に従ってPHPのライブラリを公開してみようと思います。
# PHPライブラリの作成
参考のサイトにあるように、`TemperatureConverter.php`を作成します。
“`php:TemperatureConverter.php
ファイルシステム関数
## はじめに
PHPのファイルシステム関数について整理する
### ファイル書き込みの基本手順
・ファイルを開く
・ファイルをロックする
・ファイルに対して書き込みを行う
・ファイルを閉じる“`php:file_write.php
$data[] = date(‘Y/m/d H:i:s’);
$data[] = $_SERVER[‘SCRIPT_NAME’];
$data[] = $_SERVER[‘HTTP_USER_AGENT’];
$data[] = $_SERVER[‘HTTP_REFERER’];$file = fopen(‘access.log’, ‘a’) or die(‘ファイルを開けませんでした’);
flock($file, LOCK_EX);
fwrite($file, implode(“\t”, $data) . “\n”);
flock($file, LOCK_UN);
fclose($file);
print ‘アクセスログを記録しました。’;
“`### fopen / fclose
ファイルを開く/ 閉じる
“
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