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

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

【PHP】マイナーフレームワーク「Flow」を試してみる~AOP編~

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/77048e47018e602870d1)の記事で参照可能なファイルの扱いについてまとめました。
今回はFlowにおけるAOPの実装についてまとめます。

# (ざっくりと)AOPとは
ざっくりとAOPとは何かを説明します。(「知ってるよ」って方はスキップ推奨ですmm)
chatGPT様に説明をお願いしました(丸投げ)。

> AOP(Aspect-Oriented Programming)は、プログラム内の共通な機能(ログ記録、エラーハンドリングなど)を取り出して、それらを別のモジュールとして管理するプログラミング手法です。これにより、コードがよりシンプルで保守しやすくなります。アスペクトと呼ばれるモジュールが特定の機能を担当し、アドバイスと呼ばれる処理がコードに挿入されるポイントを指定します。 AOPは特に大規模なソフトウェアプロジェクトで有用です。

まとめると『**似たような処理はまとめて、自動で実行されるようにしようね**』ってことですね。

## AOPの例
あるプロジェクトで、*

元記事を表示

【PHP】MySQLに接続する方法(mysqli)

この記事では、MySQLにPHPから接続する方法、そしてSQL文を実行する方法を紹介します。

# 注意

この記事には、コード内には**おかしいコメントが**、コード外には**おかしい文章が**書いてあります。
笑わないように**十分に警戒してください**。

そして、この記事ではPHPのモジュールでmysqliが有効化(コメントアウトされていない状態)されていることを前提としています。

# やっていこう

テレレッテッテ、テレレッテッテ、テレレッテッテッテッテ!
PHPクッキングのお時間です。
今回は、「PHP」に、「MySQL」というご馳走を食べさせるために、「MySQL」を作っていこうと思います。

まずは、PHPソースを1つと、プログラムエディタを1つ用意します。
おすすめのプログラムエディタは、VSCodeです!

まず、お好みのPHPソースを用意して、以下のソースをトッピングします!

“`php:接続.php

# 製品情報(接続情報)を入力

$mysqli = new mysqli(“発売元(正式には接続先)”, “生産者(正式にはユーザー名)”, “MySQL

元記事を表示

Oracle plsql ,PDFがアップデートされたかチェック 02

## ■環境
・PHP7.4
・Linux(RedHat 8.6)
・Smarty2.4.6
・oracle12
・PLSQL
## ■完成イメージ
1:アップロード
![スクリーンショット (904).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/0b5d64a5-4755-3a57-b089-263d5abd53c2.png)
2:アップロード後
![スクリーンショット (908).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/9b2b4c49-3fbd-f57d-4da1-bbdc569b393c.png)

## ■機能説明
### 機能
・PHPから plsqlのプロシージャを呼び。
・プロシージャで、一時テーブル(テンポラリーテーブル)へPDFのアップロード情報を格納。
・PHPでプロシージャの一時テーブルの情報をSELECTして、配列へ格納。
・.tplで配列とのチェックを行う。

元記事を表示

Testlink : テスト進捗をグラフ化する

Testlink の DB に記録されたテスト実施データからグラフを生成する手順について解説します。

# Testlink DB のアクセス

まず Testlink DB に接続する必要があります。
Testlink Root の config_db.inc に Testlink Database への接続情報が記載されています。

“`config_db.inc.php

“`

# グラフ化手順

テストの実行結果は Testlin

元記事を表示

ループメニュー問題を解いていく1

https://paiza.jp/works/mondai/loop_problems/loop_problems__print_num_step1

python
“`py
for i in range(10):
print(i+1)
“`
PHPは仕方ないけど行数多くなってしまうな

“`php

“`
じゃ次

https://paiza.jp/works/mondai/loop_problems/loop_problems__print_num_step2

python
“`py
for i in range(int(input())):
print(i+1)
“`
PHPだと、pythonのように直接入れ込む、ということはできないようです。
つまり下の`$i<=$N`の部分を`$i<=fgets(STDIN)`のようにはできないようです。 何故か調べてますがなかなかそれらしきものは見つからず。 仕方ないのでこ

元記事を表示

Amazon Linux 2023 で PHP Redis エクステンションをコンパイルする

Graviton な Amazon Linux 2023 で PHP8.2 を利用しています。

ElastiCache の Redis でセッションを使いたいと思ったんですが、2024年1月時点で、Amazon Linux 2023 のレポジトリには用意されていませんでした。

いろいろ頑張って調べましたが、自分でコンパイルしたほうが良さそうです。

ということで、コンパイルしてみました。

## 前提条件

すでに他の PHP 8.2 本体やエクステンションはインストールされていると想定

## STEP 1. GitHub に機能要望を送る

GitHub の機能要望の[該当 Issue](https://github.com/amazonlinux/amazon-linux-2023/issues/328) がまだオープンだったら、 “I want it too!” とコメントをする

コンパイルしたくない!

## STEP 2. コンパイルツールをインストールする

php-devel, gcc, make や git をインストールする

“`
sudo dnf ins

元記事を表示

【Laravel】外部キー制約を追加したテーブルでシーディングをするとエラーが発生する

## きっかけ
シーディングを行ったら、SQLのエラーが発生した。詳細は以下の通り。
### 作業手順
1. Usersテーブルの`ID`カラムとTweetsテーブルの`user_id`カラムを関連づけるために、Tweetsテーブルの`user_id`カラムに外部キー制約を付ける。
2. UsersテーブルとTweetsテーブルのシーディングを実行する。
(以下のようなデータをTweetsテーブルに格納する。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/505b9694-8c33-7736-9878-6bf97a1bae81.png)

### エラー
“`
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails(`example_app`.`tweets`, CONSTRAINT `t

元記事を表示

積の最小化

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_boss

前回の問題を教訓に
どちらかが0の場合は問答無用に0が最小になるので
こんな感じで書いてみました。
つまり、最初の数値を基準に、小さくなったらそれを採用するみたいな感じですね。
で、A~Bの間をループさせると。負の数が含まれていても結局あんまり関係ないなということで
こうなりました。

“`py
A,B = map(int,input().split())
result = 0
for i in range(A,B+1):
for j in range(A,B+1):
if A == 0 or B == 0:
break
if result == 0:
result = i * j
elif result > i * j:
result = i * j

print(result)
“`
でも解答の場合は、もうちょっとロ

元記事を表示

タイルの敷き詰め

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step8

“`py
H,W = map(int,input().split())
if H > 0 and W > 0:
if H % 2 == 0 and W % 2 == 0:
print(‘YES’)
else:
print(‘NO’)
else:
print(‘NO’)

“`

最初は最初のif文なかったんだけど、
テストケースでHやWが0だったときにこれだめなんですよね。
で最初のif文を付け加えたら正解になりました。

ちなみに、上のは入れ子になってますが、最初のif文を逆にしたらelseがいらなくなります。
(ということに今気づいた)
ただし、この場合、andだとだめでorにしないとどちらかが0の場合にNoにならないです。

“`py
H,W = map(int,input().split())
if H == 0 or W == 0:

元記事を表示

IT業界未経験からPHP⇒Python⇒Java⇒VBA、XMLと学習ロードマップをうろうろして感じたこと

自分の学習ロードマップのうろうろ歴

無事とある**PHP、Laravel**を中心とする半年のカリキュラムを課す民間のプログラミングスクールを修了し、転職フェアなどにも何回か参加してみたところ、「**実はプログラミング言語の需要には地域差がかなりある**」ということを知り(下記参照)、エッ…(゚Д゚)と思いながら、時代はAIだろ(´д`)と思って、**Python**をやってみたら少しは分かったけど、居住地域の関係で **Java**も併行し始めたけど、Pythonを使うかな(´。`)と思って内定をいただいた会社の自分の所属する部署では一番使うのは **VBA、XML** とのことで、今は急遽ExcelやVBAを触りまくっています。

①実は地域によってプログラミング言語に需要ニーズに違いがある。(-_-;)

〇転職活動を通して感じた地域の言語ニーズの差異に関する私見

(1)求人がどの地域も万遍なく一番多いのは**Java、意外と

元記事を表示

終了判定 2 Python3編

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step5

さて久しぶりにPythonから。
ここでwhileを使いました。たぶんpythonでPaizaやり始めてから初めてじゃないかな。

“`py
N,K = map(int,input().split())
cnt = 0
while N < K: cnt += 1 N = N * 2 print(cnt) ``` ところでなんで、+=は知ってるのに、*=はなぜしなかったの?と自分で自分を突っ込んでしまった。いやおっしゃるとおり。 こうですね。 ```py N,K = map(int,input().split()) cnt = 0 while N < K: cnt += 1 N *= 2 print(cnt) ``` とりあえずphpでもやっておきます。 ```php5

元記事を表示

クラスって結局何なのよ@PHP ~ふわっとイメージ共有~ 

## 背景
phpでCRUD処理を書いていると、`->`や`=>`や`::`といった記号が出てくる。調べれば意味は分かるもののを実際に意味を理解して使わないと気持ちが悪い!
のちにフレームワークを使用するとPHPの処理は大概の煩雑な処理は`よしなに`こなしてくれるらしいのですが、使いこなすためにはクラスについて知っておく必要がありそうです。

また、クラスって勉強してみても始めはよくわからない人が多いと思います。
まずはイメージするところから。。

## 簡単なクラスの例(使われ方を中心に考える)
### やってみて理解した->の意味
※厳密な言葉の定義は自信がないです。ちゃんとした説明が見たい方は調べてみましょう。
>**Don’t think, feel…**

でお願いします…まずは自分に都合の良いイメージで理解することから。違ったら正せばよいのです。

それでは、適当な例を出してみます。
#### 1. クラスを呼び出す!【インスタンス生成】
ここにとあるクラス`$Aclass`があるとします。

元記事を表示

PHPとPythonの比較勉強ー複数行にわたる入力 (paizaランク D 相当)

https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_std_in_out_step3

PHPを仕事であんまり使わなくなって今Pythonをやっているんですよね。
で、やらなくなっているとなんというか腕が鈍ってしまったりしまして。
それだとだめだなと思ったので今年から1日1回はPHPも解くようにしました。

ひとまずPythonで書いてみます

“`py

n = int(input())
for _ in range(n):
print(input())
“`
簡単ですね。
では次にPHP

“`php

“`
一応正解はしたのですが。
fgets(STDIN)で取得したものはtrimしないといけないみたいです。
なんでなのか調べたら、どうやら、入力されたときの改行を除去するため、という
意味があるそうです。
問題

元記事を表示

【Laravel】多言語化のための言語ファイルをコマンドで出力する

Laravel の多言語化対応をすることになったのですが、どうやら CakePHP とは違い標準で翻訳文字列を配列なり json なりで一括出力する方法は用意されていない模様。そんなことある…?

packagist で適当に「laravel trans」とか入れて検索し、適当にというか簡単に言語ファイルを出力できそうなパッケージを検索。それっぽいパッケージを見つけたので使いながらメモ。

## kkomelin/laravel-translatable-string-exporter

### インストール

通常、本番環境で使う事はないと思うのでオプション –dev でインストール

“`bash
composer require kkomelin/laravel-translatable-string-exporter –dev
“`

### 言語ファイルの出力

専用の artisan コマンドが使えるようになるので、そちらを実行する

“`bash
php artisan translatable:export

# example
# 英語の言語

元記事を表示

Laravel Sail – vscode devcontainer で xdebugを使う

## やりたかったこと

vscodeのdevcontainerでxdebugを使いたい(chrome)

## 備考

#### 読み手の対象:
すでにdevcontainerで開発している方
vscodeでxdebugを触ったことがある方

#### 環境:

“`
PHP 8.2.10 (cli) (built: Sep 2 2023 06:59:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies
with Xdebug v3.2.1, Copyright (c) 2002-2023, by Derick Rethans
“`
Laravel Framework 10.23.1
Google Chrome バージョン: 120.0.6099.129(Official Build) (x86_64)
Dev

元記事を表示

【Laravel】サービスコンテナ・プロバイダ・依存性注入の仕組みを整理

## #0 書いた背景

サービスコンテナやサービスプロバイダ、ファサードなどフレームワークの仕組みを特に意識することなく開発はでき、それがフレームワークの良さとも感じる、ただ、そろそろちゃんと理解しようと思ったとき色々な概念や単語が交錯して障壁を感じた。

これから書く内容は

「サービスコンテナはオブジェクト間の依存解決をやってくれますよ」
「サービスコンテナを使うにはこんなプロセスを経ますよ」
「サービスプロバイダとサービスコンテナの関係はこんなですよ」
「サービスコンテナの主なメソッドにはこんなのがありますよ」

という話を並べているであるが、ソースコードまで見ると以下のように出てくる概念や単語が多いので、整理しながらサービスコンテナの機能を追っていくというのが趣旨である。

– サービスコンテナ
– 依存性注入
– 依存関係の解決
– サービスプロバイダ
– シングルトン(singleton)
– バインド(bind)
– 登録(register)
– 解決(resolve)
– 抽象(abstrat)/具体(concrete)

よって結論とかは特にない。

前提として現在

元記事を表示

Factoryクラスに何も書かなくてもいいケース

## はじめに
Laravelでテストを実装中に「Class “Database\Factories\MessageRoomFactory” not found」というエラーに遭遇しました。

今回は、database/factoriesに新しくMessageRoomFactoryクラスを作成することで対処ができました。」

https://readouble.com/laravel/10.x/ja/eloquent-factories.html

## 環境
Laravel 9.52.16

## 問題
* 次のようなテストを実行したい

“`php: MessagesControllerTest.php(該当メソッドのみ)
public function test_Messages_store()
{
// テストユーザを作成
$user = User::factory()->create();
// メッセージルームを作成
$message_room = MessageRoom::factory()->cr

元記事を表示

PHP: SMTP over SSL でメールの送信

こちらのプログラムを改造しました。
[PHP: PHPMailer の使い方](https://qiita.com/ekzemplaro/items/de40de3ac7f66a3e2a1b)
>Port は、465 です。

## プログラム

“`php:phpmailer_smtp_ssl.php
#! /usr/bin/php

元記事を表示

php.netの「Upcoming conferences」に「PHPカンファレンス福岡2024」も掲載してほしい

今年は「月刊PHPカンファレンス」といった感じで、[1月を皮切りに6月まで毎月どこかでPHPカンファレンスが開催される](https://qiita.com/akase244/items/c3f9855275ac77be39b3)ことをご存知でしょうか?

OTHERカテゴリの最新記事