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

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

dokcer image buildでエラー吐いたのでubuntuを更新した。

docker-imageを作成するべく
作業ディレクトリのサブにapacheディレクトリを作成し
その中にDockerfileを作成。

“`Dockerfile
FROM ubuntsu:21.10

RUN apt update \
&& apt install -y apache2

CMD [“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キャッシュを無効にする
– マークアップをキャッシュしない

元記事を表示

PHPと他のプログラミング言語の比較:長所と短所

プログラミング言語は、ウェブ開発やアプリケーション開発などのさまざまな用途で使用されます。ここでは、PHPと他の一般的なプログラミング言語との比較を通じて、PHPの長所と短所について詳しく説明します。

PHPの長所

1. ウェブ対応
HTMLとの統合: PHPはHTMLとの統合が容易であり、動的なウェブページを作成するのに適しています。
広範なウェブサーバー対応: ほとんどのウェブサーバーがPHPをサポートしており、導入が容易です。

2. コミュニティとドキュメント
活発なコミュニティ: PHPには大規模で活発な開発者コミュニティがあり、多くのオンラインリソースとサポートが利用可能です。
豊富なドキュメント: PHPの公式ドキュメントやチュートリアルが豊富で、学習が容易です。

3. 柔軟性と拡張性
オープンソース: PHPはオープンソースであり、カスタマイズや拡張が容易です。
多様なライブラリ: 多くのライブラリとフレームワークが利用可能で、開発の効率を向上させることができます。

PHPの短所

1. パフォーマンス
速度: 一部のプログラミング言語に比べて、PHPの実行速度

元記事を表示

【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点を取得して合格しました。

元記事を表示

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

要素の

元記事を表示

Laravel11のDockerとか自動テストの環境を作成した

# はじめに

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

前回作成したLaravelの色々やった記事がLaravel10でやっていたので、同じ環境をLaravel11で作ってみました。

# Git

https://github.com/NiheiKeita/docker-laravel11-example-app

# やっていること

やっていることについては前回の以下の記事を読んでいただけると幸いです。

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

# おわりに

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました!

# Laravel10のリポジトリ

https://github.com/NiheiKeita/docker-laravel-app

元記事を表示

派生元ブランチとの差分のPHPファイル一覧を取得する

必要に迫られてエイリアスを作りました。

`~/.zshrc` に追記する。

“`zsh:~/.zshrc
alias derived-branch=’git show-branch | grep ‘\”*’\” | grep -v “$(git rev-parse –abbrev-ref HEAD)” | head -1 | awk -F’\”[]~^[]’\” ‘\”{print $2}’\”’
alias derived-diff=”git –no-pager diff –name-only \$(derived-branch)”
alias derived-php-diff=”git –no-pager diff –name-only \$(derived-branch) — ‘*.php'”
“`

派生元ブランチを取得します。
ローカルにないとブランクになります。

“`zsh
$ derived-branch
“`

派生元ブランチと差分のファイル一覧をすべて表示します。

“`zsh
$ derived-diff
“`

派生元ブラ

元記事を表示

PHPフレームワークFlowでドメインモデルを元にTBLを作成する①

# 初めに
PHPフレームワークFlowはドメイン駆動設計を用いた実装をするために必要な機能を多く有しており、その中の一つに『ドメインモデルを元に**TBLが自動生成される**』というものがあります。今回はこの機能について基本的な使い方を解説していきます。

# Flowでドメインモデリング
Flowはドメイン駆動設計(DDD)の概念を用いた実装を強く推奨しているフレームワークです。そのため、開発者がDDDを用いた実装がしやすくなるような機能を多数提供しています。

* **ドメインモデルを格納するためのディレクトリ**が最初から用意されている
* **ドメイン知識を表現するためのアノテーション**が用意されている
* ドメインモデルを元に**TBLが自動生成される**
* 自動生成されたTBLへの**CRUDメソッド**が用意されている
* AOPやSignal&Slotなどの**イベント駆動型プログラミング**が実装できる

これらの機能により、以下のような実装が可能になります。
* **記述量の少ないドメインモデルを作成できる**
* **DB, TBLの存在を意識せずに実装でき

元記事を表示

OTHERカテゴリの最新記事