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

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

【Laravel】Swagger UIを使用してドキュメントをブラウザで確認する

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

https://qiita.com/wrbss/items/258394193e5ffd1b926a

この記事にあるように、Swagger UIを使用してブラウザでドキュメントをみようと思います。

前回の記事

https://qiita.com/keitaMax/items/03acb4ae30345fb50891

# `swagger.json`ファイルの作成

記事にあるように、`swagger-xxx.php`ファイルを作成してみます。

今回は、appフォルダ下に`swagger-001.php`として作成しました。

“`php:swagger-001.php

元記事を表示

LaravelとFirebaseでプッシュ通知を実装する

# はじめに
APIなどのバックエンドをLaravelで実装したアプリがあったとして、そのアプリにどうやってプッシュ通知を飛ばすのでしょうか?

調べてみたのですが全体を通して解説されている情報が意外と少なかったので、ここに備忘録として記録したいと思います。

以下の点については省略しているのでご了承を:pray:
– クライアントサイド(アプリ側)の実装
– プッシュ通知で必要なAPNs Keyの発行など
– Laravelの環境構築

https://qiita.com/kokogento/items/18f5d1642f6f915f8961

全体ぞについては👆を参考に。

# Firebase側の準備
まずはFirebase側の準備をします。と言っても、Firebaseプロジェクトを作って秘密鍵のファイルを取得するだけです。

https://firebase.google.com/docs/admin/setup?hl=ja#initialize_the_sdk_in_non-google_environments

>サービス アカウント用の秘密鍵ファイルを生成するには:

元記事を表示

【PHP】API触ったことないけどハッカソンに参加してPokeAPIをたたいてみた

# はじめに
 今回はPHPでPokeAPIをつかってポケモンの画像と名前をランダムに表示する方法を説明したいと思います。
以下がイメージしているものです。

     ![PokeApiサンプル.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554505/9936059c-1f13-b145-0002-1b0ef4284c1f.gif)
今回はページを更新するたびに全国図鑑からランダムなポケモンの画像と名前を表示するようにします。

# 触ろうと思ったきっかけ
 ハッカソンに友人と参加したときにPHPを使ったアプリを作ることになり面白要素としてPokeApiを使おうという話になり自分はAPIを触ったことがなかったので挑戦しました。

# 全体のコード
“`php:pokeapi.php

元記事を表示

フォーム入力欄と入力確認画面にホームページと性別と年齢及びお問い合わせ内容、Cautionの追加をする

# フォーム入力画面($pageFlag = 0) にホームページとホームページ(URL)と性別と年齢及びお問い合わせ内容、Cautionの追加

type属性:

– ホームページ = `url`
– 性別 = `radio`
– 年齢 = `select` , `option`
– お問い合わせ内容 = `textarea`
– caution = `checkbox`

“`php:form.php
‘; var_dump($_POST); echo ‘

‘;
}

$pageFlag = 0; // 入力画面のフラグ(Topのフォーム画面)

// $_POST[‘btn_confirm’]が空でなければ $psteFlag = 1 に切り替える
if

元記事を表示

【Laravel】Swagger-PHPを使ってSwagger(OpenAPI)仕様を作成する

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

今回はSwagger-PHPを使ってみたいと思います。

https://zircote.github.io/swagger-php/guide/

# Swagger-PHPとは

>swagger-phpは、PHP ソース コード ファイルから API メタデータを抽出するライブラリです。
>
>アイデアは、アプリケーション内の関連する PHP コードの隣にswagger-php 注釈または属性を追加することです。これらには API に関する詳細が含まれており、swagger-phpそれらは機械可読なOpenAPI ドキュメントに変換されます。
(引用:https://zircote.github.io/swagger-php/guide/)

PHPでAPIを作成したら、自動的にSwagger(OpenAPI)仕様を作成してくれるライブラリのことらしいです。

# インストール

https://zircote.github.io/swagger-php/guide/installa

元記事を表示

Composer の自作パッケージの作成を通して php 開発環境を整えてみた

# はじめに

これまではノリと雰囲気で php と関わってきましたが、ついに真っ向から向き合っていかなければいけない時期が来たようです…!

というのも最近、Laravel フレームワークで作成されたアプリの本番コンテナを作成するという業務に関わったことで、アプリを弄れないとインフラ側で強引に頑張らねばならなくなり、労力の割に複雑で認知負荷が高くなってしまったり拡張性に乏しかったりと、非常に辛いことを実感しました。

そこで、PHP の基礎を理解するにあたってとりあえずは Composer の自作パッケージの作成を通して色々と学んでみましたので、得た知見や疑問・課題などを書いてゆければと思います。

ノウハウ共有というよりかは、体験談・感想文 的な要素が強いかもしれませんが、よければご覧下さい。

# ネタとして Composer パッケージ作成を選んだのはなぜ?

PHP のパッケージ管理といえば Composer であり、色々と使いこなせていない機能があることをなんとなく知っていました。
自分は SRE なので、PHP アプリの CI/CD のベストプラクティスを身につけるにあた

元記事を表示

PHPの配列で和集合,差集合,積集合

## はじめに
SQLでUNIONやEXCEPT,INTERSECTを使った際,PHPで和集合とかあるのか気になって調べたメモ

PHPでは、配列の和集合や差集合を直接扱う組み込み関数は提供されていませんが、array_mergeやarray_diff関数を使用してこれらの操作を行うことができます.

## 和集合
“`php
$array1 = [‘apple’, ‘banana’, ‘cherry’];
$array2 = [‘banana’, ‘cherry’, ‘date’];

// 和集合の計算
$union = array_merge($array1, $array2);

// 重複を削除するためにarray_uniqueを使用
$union = array_unique($union);

print_r($union);

Array
(
[0] => apple
[1] => banana
[2] => cherry
[5] => date
)

“`

## 差集合
“`php
$array1 = [‘apple’, ‘b

元記事を表示

PHP フォームセキュリティの学習振り返り FWなし

# XSS (Cross-Site-Scripting) 対策

対策方法: サニタイズをする。

phpの標準関数 `htmlspecialchars`を使用する。

下記のコードはサニタイズを施していない。

“`php:form.php




PHPでファイルのタイムスタンプをマイクロ秒精度で取得するには

Linux系OSなら素直に`stat`コマンドを使ったほうが早い。

## ファイルのマイクロ秒単位での最終修正タイムスタンプ

“`php
/**
* ファイルのマイクロ秒単位での最終修正タイムスタンプを返します。
*
* @param \SplFileInfo|string $file ファイルパス
* @return string|false ファイルのマイクロ秒単位での最終修正タイムスタンプの文字列表現 取得に失敗した場合はfalse
*/
function micro_mtime(\SplFileInfo|string $file): string|false
{
$pipes = [];

$process = \proc_open([‘stat’, ‘–format=%z’, \is_string($file) ? $file : $file->getPathname()], [
0 => [‘pipe’, ‘r’],
1 => [‘pipe’, ‘w’],

元記事を表示

PHPでフォーム入力、確認、完了画面の学習(FWなし)

# 1. 入力画面、確認画面、完了画面のフラグを定義する

$pageFlagは下記のように定義してみる

入力画面のフラグ : $pageFlag = 0; 

確認画面のフラグ : $pageFlag = 1;

完了画面のフラグ : $pageFlag = 2; 

“`php:form.php





Document




入力画面

元記事を表示

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

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/ffe50dd90d886f50f73e)の記事で、Flowにおけるイベント管理について書きました。
今回はFlowで**ログイン処理**を実装してみましょう。

# 前提知識
まずは、Flowで認証処理を実装するために抑えておきたい知識を説明します。

## どの認証方式を使うか
認証といっても、**パスワードやキーやSSOなど、様々な種類があります**。
Flowでは、それらの**認証方式の実現するための2つのインターフェース**が用意されています。
* **[1. 認証プロバイダ](https://github.com/neos/flow/blob/8.3/Classes/Security/Authentication/AuthenticationProviderInterface.php)**
* **[2. トークン](https://github.com/neos/flow/blob/8.3/Classes/Security/Authentication/TokenInterfac

元記事を表示

CSRF対策について

PHPでのCSRF対策についてアウトプットとして記事をまとめる。

## 1.初めに
CSRFとはWebアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のこと。

## 2.具体例
**ワンタイムトークン**を利用した対策を紹介する。

## 3. ワンタイムトークンとは
簡単に1度きりの**合言葉**を生成し、その合言葉が一致した場合のみログインを認め、それ以外は不正リクエストとして拒否する。

### 3.1 実装手順
1. トークンによるリクエストチェック
2. ユーザ操作によるリクエストの送信時にトークン(合言葉)をランダム生成する
3. リクエストと共に、トークンをセッションに格納かつPOST送信する
4. 受け取ったトークンとセッションに格納されているトークンを照合する
5. 一致していれば正規リクエストとして正常処理し、
6. 不一致なら不正リクエストとして拒否する

### 3.2 実装
“`php:form.php

元記事を表示

Github private リポジトリを composer installするときの注意点

## 記事対象者
(一般ユーザとしてcomposer installしており、)後述のエラー事象が発生してる方。

## 前提

organization/repos-name というプライベートリポジトリをcomposer installしようとする。

## エラー事象

composer install 時に以下のエラーが発生。


Failed to download laravel/framework from dist: The “https://api.github.com/repos/organization/repos-name/zipball/xxxxxxx” file could not be downloaded (HTTP/2 404 ): {“message”:”Not Found”,”documentation_url”:”https://docs.github.com/rest/repos/contents#download-a-repository-archive-zip”} Now trying to download from source
`

元記事を表示

Laravelのpluckは便利ですよって話

### はじめに

Laravelで開発していると必ずと言っていいほど出てくるpluckですが、Collection型配列を整頓するだけではない魅力も感じたので記事に起こそうと思いました。

状況に次第ではありますが実はEloquentで使用するとselect関数が必要なくなるんです

### 基本機能

Readoubleからそのまま引用してしまいますが、基本的な機能としては、

指定したキーのコレクション値を取得します

第1引数にvalueを、第2引数にはkeyを入れます

第1引数のみであれば、valueだけを

“`php
$collection = collect([
[‘product_id’ => ‘prod-100’, ‘name’ => ‘Desk’],
[‘product_id’ => ‘prod-200’, ‘name’ => ‘Chair’],
]);

$plucked = $collection->pluck(‘name’);

$plucked->all();

// [‘Desk’, ‘Chair’]
“`

さらに、コレクションの

元記事を表示

Laravel Debugbarとエディタを連携させる

Laravelでの開発時にDebugbarとエディタを連携させブラウザでの出力とシームレスに連携してコーディングを行うためのTIPSです。

インストールや初期設定などは行っている状態での説明になります。
上記に関する詳しい解説は以下をご参照ください。

https://qiita.com/sano1202/items/6021856b70e4f8d3dc3d

https://qiita.com/ucan-lab/items/8eab84e37421f907dea0

# デバッグしたい
Laravelでも何でもそうですが、開発している時は**とりあえずデバッグしたい**と考えるかと思います。
xdebugをインストール・設定してリモートデバッグしてもいいのですが、お手軽に環境を作りたいです。

## Laravel Debugbar

利用する場合はcomposer経由でインストールし
“`shell:composer
composer require –dev barryvdh/laravel-debugbar
“`
設定を下記のように有効にするだけです。
“`php:.

元記事を表示

MacOS上でDockerをREST APIを用いて操作するやり方

今回はMacOS上で開発をするうえで、DockerをREST APIを用いて操作する際のやり方を紹介していきたいと思います。

DockerはREST APIを用いてDockerコンテナ自体の立ち上げから停止などの様々な動作を執り行うことができます。
まず最初に、Dockerの設定を変更する必要があります。
![スクリーンショット 2024-03-21 9.34.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998838/290120a1-4d34-c5d8-4410-8c54918bc27e.png)

まず最初にPreferencesをクリックします。
そうすると設定画面が表示されますので、その画面の
![スクリーンショット 2024-03-21 9.35.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998838/782082f3-4c0e-b12d-ad7b-28fe3d43f9a9.png)

Do

元記事を表示

クラスとインスタンスについて。初学者が理解するに至ったイメージ。

## まえがき
PHPのクラスとインスタンスについて書こうと思います。
よく、クラスは設計図でインスタンスは出来上がったもの。みたいな解説を見ます。
これの意味が全く理解できず沼ったので、同じように沼った方の助けになれば。なんとなく理解した後であればわからなくもない表現ですが…。

## クラス
PHPにおけるクラスとは
“`php:index.php
class Xxx{

}
“`

これがクラスです。
– class と宣言をし
– xxx クラスに名前をつけます
– {} の中にクラスの素材をいれていきます

じゃあクラスって何いれんの? となりますが基本的に入れるのは 変数 と 関数 この二つです。
なんでいれるの?って話ですが…
規模によっては、関数や変数の数が1000以上あったりします。とんでもない数です。
関数を改造したりと管理しやすいように、似た機能のものなどでグループ分けします。
SNSなどを例にすると
– ログインログアウトアカウント作成などの認証クラス
– 文字や写真を投稿するクラス
– お気に入りや拡散などオプション系のクラス
– などなど
このよ

元記事を表示

【2024年 目標について】

2024年の目標を書いていく
現在のスキル
・ExcelVBA
・AccessVBA
・SQL
・PHP(Laravel)
・GitHUB
・DBAシルバーの合格(5月までに)
・機械学習(ニューラルネットワーク)の勉強
*地震のデータ分析
・Python(django)で1つwebアプリケーション作る
理祖は、デプロイまでする。
・dockerを使う

1年後に結果報告していく。

終わればここに報告していく

元記事を表示

【Docker Compose】DooDを使って、PHPファイルからPythonコンテナ内のPythonファイルを呼び出す方法

## はじめに
備忘録
タイトルの通りです。
どなたかのお役に立てれば幸いです。

## ディレクトリ/ファイル構造

以下のような構造であるとします。

“`
sample/
├─ web/
│ ├─ src/
│ │ └─test.php
│ └─ Dockerfile

├─ python/
│ ├─ src/
│ │ └─test.py
│ └─ Dockerfile

└─ docker-compose.yml
“`

## `python/test.py`

今回は以下のようなプログラムとします。

“`python:python/test.py
list = [
‘Apple’,
‘Banana’,
‘Orange’,
‘Kiwi’,
‘Strawberry’,
‘Mango’
]

for data in list:
print(data)
“`

## `web/`について

`exec`関数を使って、`$command`で指

元記事を表示

大学生の私が初めてPHPerKaigi2024でスタッフをやった話

みなさん、こんにちは!
わたしは現在(2024年3月時点)、情報系大学3年でエンジニアを目指しています。
ぜひX(旧Twitter)もフォローしてください(宣伝です)

今回、PHPerKaigi2024へスタッフとして参加しましたので、その感想と参加したことない人へもぜひ読んでもらいたいと思い書きました。

## 1. 読んでもらいたい人
– **PHPerKaigi含め、カンファレンスに参加したことがない人**
– PHPerKaigiに参加したことない人
– PHPerkaigiに参加したことがある人
結局全員ですねw
特に知らない人に読んでいただきたいです!

## 2. PHPerKaigiとは

![IMG_3211](https://github.com/ShotaArima/qiita/assets/130956497/36fa51df-ae19-4b05-bd2d-bcd521636caf)

>PHPerKaigi(ペチパーカイギ)は、PHPer、つまり、現在PHPを使用している方、過去にPHPを

元記事を表示

OTHERカテゴリの最新記事