- 1. いろいろな言語でAPIコールするよ!
- 2. ループ処理、switch文、break文、continue文の組み合わせには要注意(迷子になるから)
- 3. PHP 配列に値があるかチェックするメソッド
- 4. PHP 大文字 小文字を区別せずバイナリを使って文字列を比較するメソッド
- 5. Apacheで特定のディレクトリについてPHPを無効にする
- 6. [500 server error]Mac再起動後にSQLに接続できず、Laravelのプロジェクトをローカル環境で確認できなくなった時
- 7. CodeIgniter3でViewファイルをもとにHTMLファイルを出力する
- 8. 【Laravel・PHP】preg_match(): Unknown modifier ‘�’ のエラー
- 9. 【Laravel】多次元配列のデータにキーワード検索をかける方法
- 10. DatadogAgentとアプリケーションをCloud Runに同居させる
- 11. PHPフルスクラッチでWebアプリ作成
- 12. WordPressのphpファイルでfunctions.phpのショートコードを呼び出す方法【自分用メモ】
- 13. PHPにおけるクラスの使い方
- 14. ScratchAPIが便利すぎる件について
- 15. $ npm run devでコンパイルしようとしたらSintax error
- 16. localhost:8000に接続できないエラー(404 Not found)
- 17. IntelliJ IDEA / PhpStormとdockerのPHPでブレークポイントを使ってデバッグする方法
- 18. Composer基礎的な知識
- 19. WooCommerceページデザインをカスタマイズする際のphp構成
- 20. PHPUnitを使ってみる
いろいろな言語でAPIコールするよ!
## 導入
webAPIの叩き方を各言語でまとめました。
後で見返す用です。
2021年11月23日時点:Postリクエスト送信### json リクエストのサンプルパラメータ
“`python
sample_endpoint = “http://localhost:8888/sample”
sample_parameter = {
“title”: “トマトスープ”,
“making_time”: “15分”,
“serves”: “5人”,
“ingredients”: “玉ねぎ, トマト, スパイス, 水”,
“cost”: “450”
}
“`
### Curl
“`terminal
curl –location –request POST ‘http://localhost:8888/recipes’ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“title”: “トマトスープ”,
“making_time”: “15分”,
ループ処理、switch文、break文、continue文の組み合わせには要注意(迷子になるから)
まずは以下のプログラムを見ていただきたい。
※このプログラム自体に意味はありません。参考用にサンプルで作ったものなので、ツッコミどころはいっぱいありますが、一応動きます。“`php:sample.php
1, ‘type’ => 1, ‘col1’ => ‘1-col1’, ‘col2’ => ‘1-col2’, ‘col3’ => ‘1-col3’, ‘col4’ => ‘1-col4’],
[‘id’ => 2, ‘type’ => 0, ‘col1’ => null, ‘col2’ => null, ‘col3’ => ‘2-col3’, ‘col4’ => ‘2-col4’],
[‘id’ => 3, ‘type’ => 2, ‘col1’ => ‘2-col1’, ‘col2’ => ‘2-col2’, ‘col3’ => ‘2-col3’, ‘col4’ => ‘2-col4’]
];function fileterData(array $data)
{
$res
PHP 配列に値があるかチェックするメソッド
# 目的
– 配列に値があるかチェックする`in_array()`メソッドの使い方を簡単に紹介する。
# 情報
– 下記のサイトを用いてこちらに記載するソースの検証を実施した。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
– 下記のように`in_array()`メソッドを用いて値があるかチェックする。(第三引数でtrueを渡すとデータ型も含めて評価してくれる。)
“`php
in_array(探したい値, 配列, true);
“`# 例
– 下記のようにソースを記載して実行してみる。
“`php
PHP 大文字 小文字を区別せずバイナリを使って文字列を比較するメソッド
# 目的
– PHPにてバイナリを用いて文字列を比較する方法をまとめる
# 情報
– 下記のサイトを用いてこちらに記載するソースの検証を実施した。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
– `strcasecmp()`メソッドを使用して比較する。
– ASCII文字だけが、大文字小文字を区別せず比較されるらしい。
– `$str_1`と`$str_2`をそれぞれ比較してみる。
– `$str_1`には「aaa」を、`$str_2`には「AAA」を格納し下記のように比較してみる。“`php
Apacheで特定のディレクトリについてPHPを無効にする
以下の設定を\
ディレクティブ内に記載する。 “`apache:httpd.conf
php_value engine off
“`有効にしたい場合は
“`apache:httpd.conf
php_value engine on
“`より深い階層の設定が有効になるので、上記の組み合わせで「全体で無効、特定のディレクトリで有効」という設定も可能。
ちなみに以下のように記載するという記事もあったが、自分の環境ではうまく動かなかった。
“`apache:httpd.conf
RemoveType .php
“`
[500 server error]Mac再起動後にSQLに接続できず、Laravelのプロジェクトをローカル環境で確認できなくなった時
以前作成したLaravelのプロジェクトの修正を行おうとしていつも通りMAMPを起動してブラウザで表示しようとしたら、、、
![スクリーンショット 2021-11-24 16.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2292175/3cc6c7e2-64a6-d982-1dd8-9d8dd8ee0c60.png)
~~もういやだ~~
独学者にはこういうのが一番効きます。#開発環境
“`
$ sw_vers
ProductName: macOS
ProductVersion: 11.6
BuildVersion: 20G165
$ mysql –version
mysql Ver 14.14 Distrib 5.7.35, for osx10.16 (x86_64) using EditLine wrapper
$ php artisan –version
Laravel Framework 6.20.30
“`#解決手順
とりあえず.envのデバッグ設定をオン
CodeIgniter3でViewファイルをもとにHTMLファイルを出力する
こんなこと誰かがやってそうなもんですけど、全然記事が見つからないので
自分で実装することにしました。~~今更こんな枯れたフレームワーク使ってるとこないか~~
もっと良い方法あったら教えてちょ“`bash
# ファイル出力テスト用のディレクトリを作成して書き込み権限を付与
mkdir /var/www/html/test/
sudo chmod -R 777 /var/www/html/test/
# ファイル出力テスト用のControllerを作成
touch /var/www/html/admin/application/controllers/tools/View.php
# ファイル出力テスト用のViewを作成(レンダリングにはTwigライブラリが必要です)
touch /var/www/html/admin/application/views/user/test/hello.twig.html
“`“`php:/var/www/html/admin/application/controllers/tools/View.php
【Laravel・PHP】preg_match(): Unknown modifier ‘�’ のエラー
## 状況
正規表現を用いて、文字の検索をかけたいのでpreg_matchを使ったところタイトルのエラーが発生。
## コード“`php
$target = ‘/’ . $request->name . ‘/’;
$names = $collection->filter(function($value) use ($target){
return preg_match($value[‘name’], $target);
});
“`
## 原因
preg_matchの第一引数と第二引数を逆に記述したことによるエラー。
本来は第一引数に正規表現、第二引数に元データを記述しなくてはならない。“`php
return preg_match($target, $value[‘name’]);
“`
とっても単純なエラーでした。
【Laravel】多次元配列のデータにキーワード検索をかける方法
## 背景
キーワード検索でcontroller側でDBにアクセスしてデータを取得する処理はよく行われるが
今回は既に出来上がった多次元配列の変数にキーワード検索を行い、View側に返す処理を実行します。
## 処理概要
View側で部署検索フォームに文字を入れた際に部分検索で該当するデータを返すようにします。
## 処理内容
preg_matchとCollectionクラスのfilterメソッドを使用します。
【多次元配列のデータ】“`php
$departments = [
[‘name’ => ‘佐藤’, ‘department’ => ‘営業部’],
[‘name’ => ‘鈴木’, ‘department’ => ‘総務部’],
[‘name’ => ‘田中’, ‘department’ => ‘人事部’],
];
“`
処理。検索キーワードは`$request->department`に入ってる事とします。“`php
$collection = collect($departments);
$target = ‘/’ . $request->
DatadogAgentとアプリケーションをCloud Runに同居させる
## 要約
– Cloud Runで動くPHPアプリケーションのAPMをDatadogに送信したい
– supervisordを使ってコンテナ内にDatadogAgentとApacheを同居させた
– supervisordのEventListener機能を使って、”Apacheの終了=コンテナの終了”を実現した## 経緯
弊社のプラットフォーム事業本部ではDatadogの利用が進められています。
パフォーマンスの可視化を進めるために、私のいるチームが持っているPHPアプリケーションも、
Datadogに対応してAPMを送信できるようにしようとしています。
PHPアプリケーションはApacheモジュールとして動作する形になっていて、
GCPのフルマネージドなCloud Run上で稼働しています。さて、Cloud Run上で動くアプリケーションのAPMを取るための方法としては、
[公式ドキュメント](https://docs.datadoghq.com/ja/integrations/google_cloud_run/)にこのような記述があります。> 注: この機能は、Goo
PHPフルスクラッチでWebアプリ作成
# はじめに
マイペースに開発を進める予定です。
記事を書き次第、追記予定となります。
また、デザインは全くと言ってもいいほどつけないと思いますので、ご理解いただけると嬉しいです。# 経緯
気ままにWebアプリをフルスクラッチで実装しようと思ったので始めました。
また、どうせならアウトプットしようと記事にし始めました。
(MarkDownの勉強もできるし…)
# どんなものを作るか
詳しくは決めていないがバイトのシフト管理アプリを作ろうと考えています。
店長が管理者となり、従業員がシフトを提出して店長がシフトを作成する的な…# 開発環境
* Ubuntu 20.04.3 LTS
* PHP 8.0
* MySQL 8.0
* Git※今後随時更新予定
# 記事一覧
### COMMING SOON…
WordPressのphpファイルでfunctions.phpのショートコードを呼び出す方法【自分用メモ】
最近コーディングしているとphpファイル(category.phpやfunctions.php内など)でfunctions.phpにある関数を使いたくなるのでメモ。頻繁に使わないので書き方を忘れる上に検索すると違う記事ばかりでるので・・・
## コード
“`php
“`
引数に固定ページと同じショートコードを入力すれば大丈夫です。## 参考
PHPにおけるクラスの使い方
ここでは一般的なクラスやabstract、trait、interfaceなどの使い方をまとめたいと思います。
##classの使い方
クラスは変数・定数やメソッドを一つにまとめたもの。
役割ごとにクラスを作り、そのインスタンスを使ってプログラムを動かすことをオブジェクト指向という。“`php:class_example.php
class Product{
//公開条件にはpublic、protected、privateがある。
// publicは外から使える→インスタンス後にアクセスできるということ
// protectedは自分と継承先のクラスが使うことができる
// privateはクラス内でしかプロパティやメソッドにアクセスできない→変数などはprivateが安全(外から書き換えられないから)// 変数
private $product = [];// 関数
// コンストラクトメソッドはクラスがインスタンス化される際に呼び出される
// $thisはnewによりインスタンス化したオブジェ
ScratchAPIが便利すぎる件について
# はじめに
皆さ~ん!ScratchAPIって知ってますか?(唐突)# ScratchAPIとは
普通のAPIって、APIキーとか認証とかが必要になってくるんですよ。
ですが、このScratchAPIは認証いらずで手軽に誰でも使えます!
> ただし、GET系のAPIしか使えません。# 使ってみよう
ScratchAPIはいくつかURLがあります。
### 素材(画像とかサウンドとか)
~~~
http://assets.scratch.mit.edu/任意
~~~
### ベーシックなAPI
~~~
http://api.scratch.mit.edu/任意
~~~
### プロジェクトの詳細(内容ブロックなど)
~~~
http://projects.scratch.mit.edu/任意
~~~# 使ってみよう!
実際にPHPで使ってみましょ~ね~~~~php:main.php
$ npm run devでコンパイルしようとしたらSintax error
# <エラー概要>
◉LaravelMix学習
表題の通り、上記コマンドでエラー発生:::note warn
SyntaxError: Identifier ‘mix’ has already been declared
:::#<仮説>
◉コードを書き換える際に余分なコードを記載してしまった。
◉エラー文よりすでに定義された変数や定数が再定義されている#<解決方法>
“`webpack.mix.js
const mix = require(‘laravel-mix’);
“`
こちらのコードがなぜか二行書いてしまっており一行削除し解決に至りました。
エラー文の通り、 すでに定義mixという変数が再定義されているということでした。# <感想>
今回のエラーはエラー分をじっくり読めば解決できるものでした。
引き続き頑張ります!
補足アドバイスがあれば是非お願いいたします。
localhost:8000に接続できないエラー(404 Not found)
# <エラー概要>
◉Laravel学習
http://localhost:8000/admin/profile/create
に接続を試みるも、:::note warn
404 Not found
:::
と出力されうまく実行できない。#<仮説/試したこと>
◉ルーティングの記述確認
“php artisan route:list“
#<原因/結果>
“admin/news/create“
“admin/news/delete“
“admin/news/edit“
→このようにprofileのルーティングが全くできていませんでした、、“`route/web.php
Route::group([‘prefix’ => ‘admin’], function() {
//ProfileController
Route::get(‘profile/create’, ‘Admin\ProfileController@add’);
Route::get(‘profile/edit’, ‘Admin\ProfileContro
IntelliJ IDEA / PhpStormとdockerのPHPでブレークポイントを使ってデバッグする方法
xdebug php.iniの設定例。
“`
; 以下の設定だと、IntelliJのRUNではxdebug.modeの設定が無しで実行されるのでmode=developとして実行され、
; DEBUGではIntelliJ側でxdebug.mode=debugが設定されて実行されるのでブレークポイントが働くようになります
xdebug.mode=developxdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.log=/var/log/php/xdebug.log
“`上記はPHP8 xdebug3の設定です。
※PHP7xdebug2だと設定キーと値が異なります# Dockerの設定追加
Virtual machine pathとLocal Pathの対応が一致するように、Path mappingsも設定しましょう。例えばDockerの/var/www/abc.phpが、ホストの/Users/xxx/src/abc.p
Composer基礎的な知識
# Composer
忘備録です。
ほぼ、公式からの拝借です。## composer.json
プロジェクトの依存関係が記述されており、他のメタデータも含まれている場合があります。通常、プロジェクト/ VCSリポジトリの最上位ディレクトリに配置する必要があります。(Packagistに上げなければ、最上位じゃなくても問題はない)*require*
* 探して依存関係を解決してダウンロード、インストールする
* Composerはこの情報を使用して、 [repositories](https://getcomposer.org/doc/04-schema.md#repositories) キーを使用して登録したパッケージ「リポジトリ」、またはデフォルトのパッケージリポジトリである [Packagist.org](https://packagist.org/) で [適切](https://packagist.org/) なファイルのセットを検索します。上記の例では、composer.jsonファイルに他のリポジトリが登録されていないため 、monolog/monolog
WooCommerceページデザインをカスタマイズする際のphp構成
[作業環境](#作業環境)
[wordpress設定](#wordpress設定)
[ページ設定](#ページ設定)
[woocommerce設定](#woocommerce設定)
[カスタマイズの準備](#カスタマイズの準備)
[各ページに読み込むphpファイル](#各ページに読み込むphpファイル)
[ショップページ](#ショップページ)
[商品詳細ページ](#商品詳細ページ)
[カテゴリーページ](#カテゴリーページ)
[お買い物カゴページ](#お買い物カゴページ)
[支払いページ](#支払いページ)
[マイアカウントページ(ログイン前)](#マイアカウントページ(ログイン前))
[マイアカウントページ-ダッシュボード](#マイアカウントページ-ダッシュボード)
[マイアカウントページ-注文](#マイアカウントページ-注文)
[マイアカウントページ-ダウンロード](#マイアカウントページ-ダウンロード)
[マイアカウントページ-住所](#マイアカウントページ-住所)
[マイアカウントページ-決済](#マイアカウントページ-決済)
[マイアカウントページ-アカウント詳細](#マイアカ
PHPUnitを使ってみる
# What’s?
PHPUnitを始めてみたい、という記事です。
こちらを読みながら、進めていってみます。
https://phpunit.readthedocs.io/ja/latest/index.html
# 環境
今回の環境は、こちら。
“`shell
$ php –version
PHP 7.4.26 (cli) (built: Nov 18 2021 16:12:41) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies$ composer –version
Composer version 2.1.12 2021-11-09 16:02:04
“`# プロジェクトを作成する
まずは、プロジェクトを作成します。
“`shell
$ composer init
“`こんな情報で作成しました。
“`shell
Package name (/ ) [root/app]: charon