- 1. macOS Monterey(12.0.1)にapacheとphpを設定する
- 2. 【PHP】filter_inputを使用したサニタイズ
- 3. [PMMP] Enum(列挙型)を使おう!
- 4. 【Laravel8.4】composer create-project laravelでエラーが出たときの解決方法
- 5. Laravel ってなに?
- 6. 「MySQLでデータベース作成」と「PHPでデータベース記録」。(8日目)
- 7. LaravelのcommandでUser以外のDBデータをEloquentで取り出せない件
- 8. JSON データを POST で受けるテストサーバを作る
- 9. Laravelで直接SQL文を実行する
- 10. [PMMP]パーミッションを使う
- 11. Laravel7以下向けパッケージ開発でSeederにFactoryを使う
- 12. PHP+MySQLで簡易ログインシステムを作る
- 13. AmazonのSDKでASINからJANを取得する方法
- 14. Twigファイルの読込とTwigの文法について【PHPテンプレートエンジン】
- 15. MAMP環境のPHPにGMPをインストールする方法
- 16. PHP URLから構成要素を返す
- 17. PHP ファイルパスからファイル名や拡張子を取得する関数
- 18. 【VSCode】コードは正しいがエラー表示が出るとき
- 19. 初心者がLaravelでShopifyアプリ開発してみた | fileCreate
- 20. 【VSCode】PHPで型宣言をしたときにsyntaxerrorのエラーが表示されたときはVSCodeの拡張機能を確認する。
macOS Monterey(12.0.1)にapacheとphpを設定する
Montereyからapacheのデフォルトでphpがオフになってしまった。
いろんなサイトで情報を継ぎはぎしたので、自分の場合、うまくいった方法をメモる。brewを更新
“`
$ brew update
“`#H2 apacheをインストール
“`
$ brew install apache2
“`/usr/local/etc/httpd/httpd.confの以下を設定/変更。
* Listenを80
* Servernameをlocalhost:80
* mod_include.so がコメントアウトしてあるので、有効化する。
* DocumentRootを設定するapacheをリスタートする。
“`
$ sudo apachectl restart
“`#H2 PHPをインストール
元々、php 8.1が入ってたんだけど、どうやってもapacheとの連携ができなかったので、7.4バージョンを落として環境を作った。“`
$ brew uninstall php
$ brew install install php@7.4
“`
【PHP】filter_inputを使用したサニタイズ
#背景
ユーザーからの入力をデータベースに格納することは基本だと思うので、学んだついでに自分の忘備録として書いています。
#フォームからの入力
入力フォームでユーザーが入れた値を、データベースに格納する。“`html:メモの入力画面
メモの入力
“`
“`PHP:入力を登録する操作
[PMMP] Enum(列挙型)を使おう!
※この記事はPocketMine-API 4.0.0が対象です
# PMMPではEnumがPHP8.1じゃなくても使える!
PMMPには、[EnumTrait](https://github.com/pmmp/PocketMine-MP/blob/4.0.0/src/utils/EnumTrait.php)というTrait(機能)が実装されているので、これを使うことで実装することができます。# Enumを使う理由
Enumを使用しない場合、例えば以下のようなコードになると思います。“`php
class Trump
{
public const SUIT_CLUB = 0;
public const SUIT_DIAMOND = 1;
public const SUIT_HEART = 2;
public const SUIT_SPADE = 3;private int $suit;
public function __construct(int $suit)
{
switch ($suit) {
【Laravel8.4】composer create-project laravelでエラーが出たときの解決方法
#GitBashにコマンドを打ったらエラーが出た。
“`
composer create-project laravel/laravel=”8.4.*” laravel
“`##エラー文
“`
Problem 1
– laravel/framework[v8.12.0, …, 8.x-dev] require league/flysystem ^1.1 -> satisfiable by league/flysystem[1.1.0, …, 1.x-dev].
– league/flysystem[1.1.0, …, 1.x-dev] require ext-fileinfo * -> it is missing from your system. Install or enable PHP’s fileinfo extension.
– Root composer.json requires laravel/framework ^8.12 -> satisfiable by laravel/framework[v8.12.0, ..
Laravel ってなに?
## 勉強前イメージ
聞いたことはある
プログラム的なやつ?## 調査
### Laravel とは?
ララベル と読み、PHPのフレームワークになります。
フレームワークというのは、
システム開発をする際に必要となる機能などがまとまったものになります。
PHPのフレームワークは他にもCakePHP等があります。### Larabel の特徴
– MVCモデルの採用
model,view,controllerに分けられて、
それに伴い開発を進めます。
MVCモデルの使用で、どこに何を書くかが明確になり開発が進めやすくなります。– Composerでパッケージ管理
Composerというパッケージやライブラリを管理するツールで
LaravelはComposerで管理されます。
Composerを使うことで依存性の解決や必要なライブラリがあればインストールされます。– データベースの操作が安易
Eloquent ORMとMifrationというのが備わっているので
データの扱いを柔軟にし、データベースの管理を安易になっています。– 機能やプラグインの開発が
「MySQLでデータベース作成」と「PHPでデータベース記録」。(8日目)
Kotlinのスマホアプリ(クライアント)が、ほぼ完成したので、サーバ側で受信したデータを記録する為、データベースを作成していきます。
サーバは、契約済みのロリポップを使用。
#前回の記事
Kotlinで地図アプリ(ゴミ拾いアプリ)作成。(7日目)
https://qiita.com/fix/items/79afbea4d8c44c5a1f9c
##一週間でやった事
* **GoogleMap APIを使い、地図+位置情報を表示**
* **移動に合わせて、マップがスクロール**
* **ゴミの種類を「大・中・小」にわけ、ボタンアイコンを作成**
* **ボタンにイメージアイコンを作成**
* **ボタンタップ後、サーバー側へHTTPS(GET)でデータを送信(BASIC認証)**
* **送信前に確認ダイアログを表示**
* **送信後、地図上にアイコンを表示**
* **アイコンタップで、種別/時間を表示**
* **サーバー側でBASICに認証**
* **サーバー側でPHPを使いGETデータ記録テスト**#ロリポップサーバでデータベースを作成
ログインし、
LaravelのcommandでUser以外のDBデータをEloquentで取り出せない件
## TL;DR
Laravelは便利なもので、php artisan hogehoge ってコマンドを簡単に作れます。
これを利用して定期実行させたりもできて使っているのですが、、**User以外のmodel呼び出しでeloqunet使えない!!!**
結局、インジェクションのリスクが少ない箇所だったので、直接SQL叩いて解決しました。“`DB::select(DB::raw())“`
# 症例
例えば
app/Console/Commands/HogeCommand.php
“`php
public function handle()
{
$users=User::get();
//色々な処理
return Command::SUCCESS;
}“`
これは出来るわけです。
でも、このユーザーに紐付いた日記テーブル(diaries)から値を取ろうとすると
“`php
public function handle()
{
$users=User:
JSON データを POST で受けるテストサーバを作る
IoTデータを受けるサーバでは、API として JSON データを POST するものが多い。
ちゃんと JSON データが送られているかな? とデバッグする時に、自前でちゃちゃっとテストサーバーを作ってみる。# PHP スクリプト
“`
“`
最初は
“`
// $data = $_POST[‘data’];
// echo $data;
“`としていたが、JSONのPOSTは通常のPOSTメソッドじゃないということで、上記のように
Laravelで直接SQL文を実行する
Laravelで直接SQLを実行するにはその種類によってメソッドが変わります。参照系の場合には `DB::select()` を利用します。
“`php
$sql = “select i.* from input_tmps i
where i.id is not null;”;
$rows = DB::select($sql);$retArray = [];
/** 結果取得 **/
foreach($rows as $row) {
$retArray[$row->id][] = $row->value;
}
“`LOCK文等の場合には `DB::unprepared()` を使います。
“`php
DB::unprepared( ‘LOCK TABLES ‘ .
DB::getTablePrefix() . ‘input_tmps1 WRITE,’ .
DB::getTablePrefix() . ‘input_tmps2 WRITE,’ .
DB::getTablePrefix() . ‘input_tmps3 WRITE, ‘ .
DB::
[PMMP]パーミッションを使う
※この記事では執筆時点で安定バージョンのPocketMine-MP API4.0.0に準拠しています。
# パーミッションとは
権限です(そりゃそうだ)、コマンドの実行権限を制御するのに使われることが一番多いと思います。
でも、どうやって使えばいいのか、なんで使ったほうがいいのか分からない人もいるかもしれません。
使ってみるとそこまで難しくはないので、是非使ってみてください。お願いします。使ってください…….# パーミッションを使う理由
– OPであるかどうかに依存しない
– プレイヤーごとにパーミッションを与えるか制御することができる(e.g. VIPユーザー(OPではない)もOP専用コマンドを使用できるようにする)
– コマンドリスト(helpなど)にパーミッションが無くて使えないコマンドを表示させない
– `Permissible->hasPermission(DefaultPermissions::ROOT_OPERATOR)`とか訳分からん長い謎の定型文を書かなくていい!!# 使い方
## パーミッションを登録する
パーミッションは、許可する物事ごとに
Laravel7以下向けパッケージ開発でSeederにFactoryを使う
## 対象
* Laravel5,6,7系向けのパッケージ開発を行おうと思っている人
* パッケージとしてデータベースにデータを登録する必要がある
* パッケージ開発自体はやったことがある## 概要
* composer.json の autoload で seeder や factory を読み込むようにする
* factory をパッケージ側でロードする
* seeder で factory を利用する
* seeder を組み込み側で呼び出す## 詳細
`Vendor`, `Package` のところはそれぞれ置き換える。
クラス名などはそれぞれ好きなように。
ディレクトリ構造も例であって、autoload やパスを正しく設定できれば好きな構造で問題ない。### ディレクトリ構造
– database
– factories
– UserFactory.php
– seeds
– DemoSeeder.php
– migrations
– src
– ServiceProvider.php
–
PHP+MySQLで簡易ログインシステムを作る
こんにちは、ウェブエンジニアのmasakichiです。
いつもはgithubの[TILレポジトリ](https://github.com/Naughty1029/TIL)で日々の学習を記録しています。##これは何の記事?
PHPとMySQLで簡易ログインシステムを作ります。
実装する機能は下記の通りです。– ユーザー登録
– ログイン
– ログアウトなお、下記の環境で動作確認しています
m(__)m < ご承知おきを ```text:動作環境 MAMP PHP 7.4.21 MySQL 5.7.34 ``` ##なんでこの記事書いたの? 先日、Laravelでウェブシステムを作るときに、ログイン機能も実装しました。 Laravelだと、簡易なログイン機能であればコマンド1発でサクッと作れちゃいます。 Laravelすげぇ いや、でも… そもそもログイン機能ってどういう仕組みなの? どうやって実装するの? と気になり、色々な記事を参考にさせて頂きながら実装しました。 なお、実装するのはセッションベースの認証です。 ## そもそもセッションってなに? セッショ
AmazonのSDKでASINからJANを取得する方法
ASINからJANは取得できないかと思っていたが、どうやらできる模様
“`
amazon-php-sdk/src/com/amazon/paapi5/v1/GetItemsResource.php
“`の49行目にある
“`php
const ITEM_INFOEXTERNAL_IDS = ‘ItemInfo.ExternalIds’;
“`が外部のIDを取得するResourceのようだ
$resourcesにITEM_INFOEXTERNAL_IDSを追加して
“`php
$resources = [
GetItemsResource::ITEM_INFOTITLE,
GetItemsResource::ITEM_INFOEXTERNAL_IDS];
“`のように(どこでも良いが一番下に追加)する
リクエストした結果から
“`php
$jan = $item->getItemInfo()->getexternalIds()->geteANs()->getdisplayValues()[0];
“`JANを取得できました
めでたしめでたし
Twigファイルの読込とTwigの文法について【PHPテンプレートエンジン】
## 最初に
ECサイトの機能開発においてLAMP環境下においてPHPのテンプレートエンジンであるTwigを使用することとなりました。##Twigファイルの読込
Controller系クラスからTwigLoaderクラスを生成してTwigファイルを読み込みます。
TwigLoaderクラスのsetFilepathメソッドをcallしてloadメソッドをcallします。
以下は私のコードです。“`HomeController.php
‘1.0.0’,
url => ‘daichisugiyama.net’,
])
MAMP環境のPHPにGMPをインストールする方法
下記の機能を実装するにあたりGMPをPHPにインストールする必要がありました。
MAMP環境を使っていたため少しインストールが難しかったですがなんとかできました。https://blog.capilano-fw.com/?p=5404#env_error
##参考にした記事
https://gist.github.com/aurelioluiz/63813b6af780725a67ba4fb535b3bed5##手順
###まずは下記のコマンドを入力(Homebrewが必要)
“`
brew install autoconf gmp
“`Homebrewは下記を参照
https://qiita.com/omega999/items/6f65217b81ad3fffe7e6###PHPの公式サイトから自分がMAMPで使っているPHPのバージョンをダウンロード
公式サイト
https://www.php.net/downloads.php自分は8.0.0を使っていたので、下記をダウンロードしました
https://www.php.net/distributi
PHP URLから構成要素を返す
# 目的
– URLの文字列から構成要素を返す`parse_url()`関数の使い方をメモ的にまとめる
# 謝辞
– 本知見は筆者が記載した記事[PHP ファイルパスやURLからファイル名や拡張子等を取得する](https://qiita.com/miriwo/items/35e76cc255788b618ad0)にコメントを下さった @s9er7 様のご知見です。
– この場を借りて改めて感謝致します!コメントを下さり本当にありがとうございます!# 情報
– 筆者は下記サービスを用いて今回の記事内容の動作確認を行った。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
1. PHPのURL関数の一種である`parse_url()`を用いる。
1. 下記の様に記載することでURLの構成要素の情報を配列で返してくれる。“`php
parse_url(URL);
“`1. 例えば[https://qiita.com/miriwo](https://qiita.com/miriwo)
PHP ファイルパスからファイル名や拡張子を取得する関数
# 目的
– ファイルパスかラファイル名や拡張子を取得する`pathinfo()`関数の使い方をメモ的にまとめる
# 謝辞
– 本知見は筆者が記載した記事[PHP ファイルパスやURLからファイル名や拡張子等を取得する](https://qiita.com/miriwo/items/35e76cc255788b618ad0)にコメントを下さった @s9er7 様のご知見です。
– この場を借りて改めて感謝致します!コメントを下さり本当にありがとうございます!# 情報
– 筆者は下記サービスを用いて今回の記事内容の動作確認を行った。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
1. PHPのファイルシステム関数の一種である`pathinfo()`を用いる。
1. 下記の様に記載することでファイルパスの各情報を配列で返してくれる。“`php
pathinfo(ファイルパス);
“`1. 例えば`/etc/nginx/conf.d/default.conf`というファイルパスを
【VSCode】コードは正しいがエラー表示が出るとき
##背景
プログラミングを学び始めた初学者です。
コードが合っているにも関わらずエラーが表示されてしまい、解決に手間取ったので同じような状況で悩んでいる方に向けて書いています。##前提
PHP 8.1.1
エディタ Visual Studio Code##症状
簡単なコードを書いていた際に、次のようなエラーが出ました。(実際のエラー発生のコードではありません)![スクリーンショット 2021-12-28 15.07.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408438/37e1e0fc-2e4d-3806-3978-ebd3d7ac7974.png)
構文は正しいのですが、ブラウザでも表示されず。(まあ、正しくないので表示されないんですが、それは置いといて。)
エラー文は「echoという記号は使用が予想されていませんよ」と出ています。##原因と解決法
エラー表示の出ている文の一つ上の行(ここでは
初心者がLaravelでShopifyアプリ開発してみた | fileCreate
#はじめに
shopify業務に携わることになったため、勉強の日々を過ごしているモモナです。
2週間前にshopifyの勉強を始めたばかりなのでわからない部分も多々ありますが、初心者なりに学んだことをまとめていこうと思っています。
訂正箇所や認識違いなどあれば、ご指摘お待ちしております。今回は、Laravelを利用したshopifyアプリ開発でのファイル作成(fileCreate)を紹介します。
#動作環境
Mac OS Catalina
PHP 7.4.27
Laravel Framework 8.76.2#環境構築
shopifyの登録方法などは、他に詳しくまとめている方もいるので割愛させていただきます。
公式サイトでも流れは確認できるかと思います。https://www.shopify.jp/blog/partner-shopify-app-development?utm_source=shopifydev&utm_medium=youtube&utm_campaign=jp_shopifydev_youtube
Laravelでの開発は下記サイトを参考にさせてい
【VSCode】PHPで型宣言をしたときにsyntaxerrorのエラーが表示されたときはVSCodeの拡張機能を確認する。
VSCodeでPHPを書いていると型宣言の部分でエラーが表示されました。
今回はこちらのエラーについての対応について書いていきます。### ■解決策
VSCodeの拡張機能「PHP Language Features」を無効にする。>Go to Extensions.
・Search for @builtin php
・Disable PHP Language Features. Leave PHP Language Basics enabled for syntax highlighting.
Note that other (3rd party) PHP extensions which provide similar functionality sho