- 0.0.1. wordpressの設定パラメータの一覧を表示する「options.php」
- 0.0.2. 【自分用メモ】あれこれ
- 0.0.3. 【自分用メモ】住所検索api
- 0.0.4. 【自分用】4/25 php + dockerの環境構築途中まで
- 0.0.5. 学習日記 #5
- 0.0.6. 【PHP7.1以降】1行で配列の値の前後を入れ替える
- 0.0.7. Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その7「スキーマビルダー」
- 0.0.8. AWS を使ってみた
- 0.0.9. 正規表現を使ってMarkdownをHTMLに変換する(PHP)(編集中)
- 1. 正規表現を使ってMarkdownをHTMLに変換する(PHP)(編集中)
- 1.0.1. LaravelのTinkerの使い方【基礎編】①起動〜DBの記録まで
- 1.0.2. Symfonyの構造 routeとcontroller
- 1.0.3. 【自分用】4/24 php + dockerの環境構築途中まで
- 1.0.4. Laravel6.Xにて、PDF出力システムを構築する際に調査した内容覚書
- 1.0.5. http_build_queryの落とし穴 備忘録
- 1.0.6. 【PHP】PHP入門
- 1.0.7. 学習日記 #4
- 1.0.8. WordPressでpre_get_postsで記事を取得する際ACFの繰り返しフィールド内のデータを条件に加える方法
- 1.0.9. セキュリティーを犯す攻撃の種類(phpでの対策)
- 1.0.10. PHPライブラリPackagistで公開まで – Step By Step
- 1.0.11. Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その6「データベース接続」
wordpressの設定パラメータの一覧を表示する「options.php」
# 概要
タイトルのままなのですがwordpressで設定パラメータの一覧を表示させるページがあります。
普段そんなに使うことはないので自分のための備忘録です。# 表示方法
表示させるには下記のURLへアクセスします。
http://ドメイン/wp-admin/options.php
上記のページにアクセスすると各種パラメーターの一覧が表示されます。
例えば、「upload_path」を変更すれば、通常 /wp-content/uploads/ 配下に画像が置かれますが、これを別のディレクトリに変更することもできるのです。
そのほかにもパラメーターを一覧表示させているので一気に変更したいときなど重宝するかなと思います。# 終わり
【自分用メモ】あれこれ
“`
$db->lastInsertId();
// 直前にinsertされたデータのIDを取得inarray(count($〇〇), array(1, 2));
“`
画像をポップアップ表示:light box
【自分用メモ】住所検索api
api→[郵便番号データ配信サービス](http://zipcloud.ibsnet.co.jp/doc/api)
“`
$baseurl = “https://zipcloud.ibsnet.co.jp/api/search”;
$zipcode = “○○○-○○○”;$ch = curl_init(); #初期化
curl = setop(
“`参考
https://qiita.com/tom_ato/items/38617e75ee61b29bb100
【自分用】4/25 php + dockerの環境構築途中まで
#今日のエラー
`docker exec -it php php artisan ui vue –auth`に対して“`
Command “ui” is not defined.
“``composer fund`で調べたら下記のエラー
“`
Composer could not find a composer.json file in /Users/user/projects/phpForEveryone
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ “Getting Started” section
“`再起動して`docker run –rm -v /Users/user/projects/phpForEveryone/src:/app composer require laravel/ui`
をもう一度打ったら直った。インターネット接続が不安定のせいでこのコマンドがうまくいっていないのかも
学習日記 #5
#名前の記法と名前解決のルール
・被修飾名 : 被修飾名は名前空間を含まない名前のことである。
・修飾名 : 名前空間の階層区切り文字を含んだ名前のことである。
・完全修飾名 : 「\」で始まる修飾名のことである。ファイルシステムに例えると、修飾名/被修飾名は相対パス、完全修飾名は絶対パスとなる
#インポート
名前空間が導入されても、クラスを呼ぶときに長い名前を使うのはメリットがないため、use命令による型のインポートをする。##クラスのインポート
1. グローバルスコープ、またはnamespaceブロックの配下で呼び出す
2. インポートの有効範囲はファイル単位PHP5.6以降では定数/関数のインポートができる。
#クラスの自動ローディング
扱うクラスが増えてきた場合に、クラスのファイル一つ一つをrequire_once命令で呼び出すと誤りの原因になってしまうため、
spl_autoload_register関数を用いる。オートローダを登録するための関数である。オートローダとは、存在しないクラスをインスタンス化する際に呼び出し、対応するクラスファイルをインク
【PHP7.1以降】1行で配列の値の前後を入れ替える
## 背景
Vue.jsで、配列に入ったdata要素を前後でスワップする機能を作成しようと思ったのですが、
reactiveに画面に反映できず、バックエンドで簡単に処理するにはどうしよう?と思い調べてみました。## コード
“`php:example.php
$array = [‘a’,’b’, ‘c’, ‘d’, ‘e’];public function swapValues(array $array int $key) {
return [$array[$key], $array[$key + 1]] = [$array[$key + 1], $array[$key]];
}
“`よくある書き方として、`$tmp`などの配列の値を一時保存するコードはよく見るのですが、
これだと直感的に見てもわかりやすくないですか?## takeaways
これはphp7.1から追加された、`「対称的な配列の分解(Symmetric Array Destructuring)」` と呼ばれるシンタックスですね。>配列の短縮構文 ([]) を使って、 代入用に配列の値を取り
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その7「スキーマビルダー」
### INDEX
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!– [その1「マイグレーションファイルを見てみよう」](https://qiita.com/xioncc/items/1dcec2fbe3485b7e769a)
– [その2「$app[‘db’]って何者?」](https://qiita.com/xioncc/items/cd4a46e5aca16b13174d)
– [その3「Repositoryクラス」](https://qiita.com/xioncc/items/1ce2132594c4596a73ae)
– [その4「Larabelアプリケーションの初期化の流れ」](https://qiita.com/xioncc/items/a17d7f905d4a5abf8103)
– [その5「リポジトリの読込」](https://qiita.com/xioncc/items/dc7df63c2487b02052f3)
– [その6「データベース接続」](https://qiita.com/xion
AWS を使ってみた
Amazon Web Service (以下、AWS) を使ってみた。
自分はノートPC (MacBookAir にUbuntu 18.04.4 LTS をインストールしたもの)で作業やら学習やらを行っている。
スペック
—
– メモリ:7.7GiB
– プロセッサ:Intel core i5-5350U
– OS:Ubuntu 18.04.4 LTSpythonで機械学習をやったときは流石に動作が重かったが、フツーの使い方をするくらいならなんの問題もない。
まず結論
—
便利。貸倉庫みたいな感じで、必要だけど今はいらないってデータを入れておくとノートPC の邪魔にならない。github に保管しといて、AWS 上でclone するのもありかも。
PHP 動作確認ができる。ドメイン名やらなんやら設定すればweb ページの運営も安全にできる(ノートPC で運営してるとアクセスが集中したときにPC がアツアツになって危険)。
その他のプログラミングの勉強ができる。
新規登録から12ヶ月の無料期間があり、それが切れるとアカウント作成時に登録した口座から従量課金性で使用量が
正規表現を使ってMarkdownをHTMLに変換する(PHP)(編集中)
正規表現を使ってMarkdownをHTMLに変換する(PHP)(編集中)
LaravelのTinkerの使い方【基礎編】①起動〜DBの記録まで
# Tinkerとは
tinkerとはDBのやり取りを対話的に行えるシステムです。
ちょっとした動作を実行する際に使用します。## Tinkerの起動と終了
**以下の操作は全てターミナルで実行します。“`tinker.php
//tinkerの起動
php artisan tinker
//tinkerの終了
exit
“`
## Recordを一つずつ挿入する“`tinker.php
$post = new App\Post();
// postのtitleにtitle 1を挿入
$post->title = “title 1”;
// postに入力したデータを保存する
$post->save();
“`
## Recordをまとめて挿入する
先にデフォルトのMass Assignmentを解除する。
Post.phpでtitleとbodyへの入力を許可する“`Post.php
class Post extends Model
{
protected $fillable = {‘title’,’body’};
}
“`
続いてターミナルで作業`
Symfonyの構造 routeとcontroller
“`terminal
.
├── bin
│ └── console
├── composer.json // ここからプロジェクトが始まる
アプリに必要なすべてのサードパーティライブラリがリストされています。
├── composer.lock
├── config // configファイルが格納される
│ ├── bootstrap.php
│ ├── bundles.php
│ ├── packages
│ ├── routes
│ ├── routes.yaml
│ └── services.yaml
├── public // document root(front controllerと言われ、webサーバーによって実行されるファイル
│ └── index.php
├── src // PHP コードが格納される
│ ├── Controller
│ └── Kernel.php
├── symfony.lock
├── var
│ ├── cache
│ └── log
└── vendor
├── autol
【自分用】4/24 php + dockerの環境構築途中まで
#今日のエラー
Catarinaに変えるとこのエラーが出るらしいです。
Could not open input file: artisan
configure: error: Please reinstall the BZip2 distribution
checking whether to enable the SQLite3 extension… no
checking if the location of ZLIB install directory is defined… no
configure: error: Cannot find zlib#ここを見た
https://qiita.com/takeshi81/items/72e0010454f05bf97639
#どうなった
インターネットに繋がらなくなったのでまだエラー解決に至っていないです。あとmacは古いやつだと長時間使うとインターネット繋がらなくなるみたい(バタフライ構造によりキーボードが打
Laravel6.Xにて、PDF出力システムを構築する際に調査した内容覚書
#LaravelでPDF帳票を作成
業務にて税務処理などで帳票を出力するシステムを構築することになり、Laravelでやることになったのだが、検討時にいろいろと詰った、というか困ったことが多々あり、備忘録がてら情報を纏める。
##出力するためのフレームワーク・環境など
###PC環境
・Windows10
・Laravel 6.18.3###検討対象としたフレームワーク一覧
– [x] TCPDF(+PDFI)
– [ ] mPDF()
– [ ] FPDF
– [x] Laravel-snappy
– [x] Laravel-dompdf(調査と記述したものにチェック)
##調査内容
まずイメージとして、html5で書かれた帳票イメージをPDF化するものと想定。
帳票ってのは所謂、御役所とかに出す控除申告書とか、届出みたいなもの。
###TCPDF(+PDFI)
**できないことが多すぎる!**()
PDF化する際に解釈できるCSSがかなり限定的。
つまり、HTMLで見れた帳票そのものが出てくることがまずない。
[こちらのかた](https://y
http_build_queryの落とし穴 備忘録
## NULLを送りたい時の落とし穴の内容
http_build_queryの仕様ではあるが、渡したパラメーター配列の値やキーによって、若干想定(希望w)と異なる結果を返してしまうことがある。
問題点は2つ:
「キーのみあって値がNULL」の場合、http_build_queryの返却値にパラメーターのキーが入らず、パラメーターとして欠けてしまう。
例:
“`
$params = array(‘key1’ => null, ‘key2’ => ‘value2’);
var_dump(http_build_query($params));
“`の場合の結果は
“`
string ‘key2=value2’ (length=11)
“`になります。
野望的には
“`
string ‘key1=&key2=value2’ (length=11)
“`を期待していても無駄です。
対策は、あとで追記しますが、まずは備忘録的にアップしました。
【PHP】PHP入門
##【PHP】PHP入門
##実行
“`php:Hello.php
“`
“`:出力
Good morning
Good evening
Good Hello
““##配列
“`php:Array.php
= 60) {
echo “湿度が”.$hum.
学習日記 #4
# PHP7でのエラー報告の扱い
これまで最上位であったExceptionクラスの上位に、Throwableクラスが導入され、これに伴い内部エラーを表すErrorクラスと、いくつかのサブクラスが導入されている。try~catchでエラー報告を補足できるようになっている。ErrorクラスはExcetionクラスのサブクラスではない。#マジックメソッド
予め特定の役割を与えられたメソッドとして、マジックメソッドが用意されている。クラスに対して、特定の機能を実装することが出来る。##__get/__setメソッド
未定義のプロパティを取得/設定しようとしたタイミングで呼び出されるメソッドである。##__iseet/__unsetメソッド
__get/__setメソッドとセットで利用することがおおい。##__call/__callStaticメソッド
クラス定義の時点では、決めておけない任意のメソッドを処理できる。##__toStringメソッド
オブジェクトの文字列表現を規定する。
デフォルトでは、オブジェクトをprintなどの命令で出力することは出来ない。__toStr
WordPressでpre_get_postsで記事を取得する際ACFの繰り返しフィールド内のデータを条件に加える方法
例えば繰り返しフィールド(event)で、開催日(start)、終了日(finish)をカスタムフィールドで設定して
現在日付がそれらの間だった時の記事を取得させる場合“`query.php
function change_posts_per_page($query) {
//管理画面のメインクエリーとメインクエリーじゃないときは処理しない
if (is_admin() || !$query->is_main_query()) return;// 特定のクエリにて処理
if ($query->is_category() || $query->is_tag() || $query->is_search()) {
// 20件取得
$query->set(‘posts_per_page’, 20);
// 本日日付取得
$today = date_i18n(‘Ymd’);
// SQLを変更させるフラグとして設置
$query->set(‘wildcard_meta_key’,true);
$query->set(
‘meta_query
セキュリティーを犯す攻撃の種類(phpでの対策)
#攻撃手法
①XSS: 目的のサイトに対して、直接情報を送って、攻撃(サイトに表示、データを攻撃側に送信)。ユーザからのデータを表示されるサイトが対象
⬇️
対策:入力フィルタ、出力エスケープ②CSRF: ユーザーが意図せず、自分のサーバ側を攻撃してしまう。第二のサイトを介することで行うことで、正常なユーザーからのアクセスと判断
↓
[phpでのcsrf対策](https://qiita.com/drafts/17df73d5488369cb54f8/edit)③SQLインジェクション: クエリが記述されるページに対して、データを送って不正なクエリを作成させること
⬇️
PDOオブジェクトでクエリをセットする時に、段階を分けることで可能にする。:で仮の変数を使ってクエリを作成する
⬇️
prepareでクエリをPDOオブジェクトにセットする。これによって作られるのはPDOステートメントクラス。
⬇️
PDOステートメントインスタンスにbindValueやbindParamで仮の変数に値を入れて、クエリを正常な形にする
⬇️
PDOステートメントインスタンスにexecuteで
PHPライブラリPackagistで公開まで – Step By Step
# はじめに
– PackagistにPHPライブラリ公開するまでの手順を本当に必要最低限な情報のみで示す
– 取り敢えず上から脳筋でやっていけば出来るはず
– 情報抜けてたり間違っていたりしたら申し訳ない# 作業手順
– [Packagist](https://packagist.org/)でアカウント作成– Packagistログインしたら、PackagistとGitHubと連携
– 取り敢えず[ここ](https://packagist.org/profile/edit)に入ってみれば「ああ、なるほどね」ってなるので見てくれ
– GitHubレポジトリ作成
– GitHubレポジトリURLをコピる
– ローカルで以下を実行“`b
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その6「データベース接続」
### INDEX
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!– [その1「マイグレーションファイルを見てみよう」](https://qiita.com/xioncc/items/1dcec2fbe3485b7e769a)
– [その2「$app[‘db’]って何者?」](https://qiita.com/xioncc/items/cd4a46e5aca16b13174d)
– [その3「Repositoryクラス」](https://qiita.com/xioncc/items/1ce2132594c4596a73ae)
– [その4「Larabelアプリケーションの初期化の流れ」](https://qiita.com/xioncc/items/a17d7f905d4a5abf8103)
– [その5「リポジトリの読込」](https://qiita.com/xioncc/items/dc7df63c2487b02052f3)
– [その6「データベース接続」](https://qiita.com/xion