- 1. PHP、Wordpress用の全国市区町村マスタコード(2022年9月版)
- 2. PHP、Wordpress用の全国駅マスタコード(2022年9月版)
- 3. @csrfについて
- 4. ド・モルガンの法則をphpにて
- 5. 最初はスパゲティコードでもいいからまず書く
- 6. PHPの変数の値をHTMLタグの属性値として使う。
- 7. プロセス間通信を非同期化する
- 8. Web系エンジニア新卒1年目が入社半年後に感じた、初学者エンジニアに必要なスキルまとめ
- 9. AlmaLinux OS 9にPHP 8.1, PHP-FPM 8.1をインストール(AppStream)
- 10. Symfony3.4以降 — なぜ LaravelでなくSymfony ? —
- 11. &&、||、!
- 12. Bitnami が提供する WordPress 用のイメージは PHP を更新することはできません
- 13. PHPのライブラリでQRコード®を作成する。(chillerlan/php-qrcode)
- 14. 複数のPHPバージョンをインストールし、ディレクトリごとに自動でバージョンを切り替える
- 15. 文字列の連結、if文、比較演算子、真偽値、else文、elseif文
- 16. PHPのデバッグ導入手順(XAMPP + Laravel + Eclipse + Xdebug)
- 17. 【Laravel】クエリビルダでサブクエリを CROSS JOIN する方法
- 18. Laravel とある予約システムの 共通関数部分のメモ 02
- 19. 【PHP】ざっくりオブジェクト指向 – アクセス権とカプセル化
- 20. 【PHP】ざっくりオブジェクト指向 – staticと遅延静的束縛
PHP、Wordpress用の全国市区町村マスタコード(2022年9月版)
# 全国市区町村のマスタデータが必要になった
駅データと一緒に全国市区町村データも必要になったので作成。
郵便住所.jpさんからデータを拝借。このサイトは取得データが絞れるので、とてもコードに利用しやすい。
とても汎用性に高い構想で作られていて、住所データ系サイトの中でも素晴らしいサイト。
https://postaladdress.jp/# マスタコード
県→市町村→区の3レベル構造です。
コメントアウト解除すれば地域→県→市町村→区の4レベル構造にも対応。
https://github.com/obwebsys/obwebsys/blob/master/create-todofuken202209.php
PHP、Wordpress用の全国駅マスタコード(2022年9月版)
# WordPressで全国駅マスタが必要になった
汎用コードはどこにも転がってなかった。ただ、駅マスタを公開しているサイトはあった。
駅データ.jpである。
https://ekidata.jp/faq.phpこのサイト、faqを見れば分かるようにかなりデータの扱いが柔軟ぽい。無償であれば有償データも第3者に提供してよいとなっている。
メンテナンスは素人には出来ないであろう、、というプロの余裕を感じるし、実際その通りだと思う。なかなか至れる境地ではなく、感服しきりである。
ありがたくデータを使わせてもらい、出来れば読者諸兄にも有償データを購入していただき、メンテナンスを応援してもらいたい。# マスタコード
都道府県番号からorder順を生成するので、最低限は順番通りに並ぶはず。
県レベル→路線レベル→駅レベル
という3レベル構造です。
https://github.com/obwebsys/obwebsys/blob/master/create-ekidata202209.php# 生成コード(おまけ)
https://ekidata.jp/api/
こちらからAPI
@csrfについて
現在独学でLaravelを使用し、簡単な掲示板を作成しています。
掲示板を作成していくなかで、投稿や編集画面でフォームを作成する際formタグの中に@csrfを記載することで、CSRF攻撃を防げる機能がLaravelには備わっておりました。
CSRF攻撃とはそもそも何?というところから、@csrfと記載する事でどのような処理を行なってくれているのかという所までご紹介させていただきます。
理解を深める意味と備忘を兼ねて投稿をさせていただきます。## ●そもそもCSRFとは
##### 正式名称:cross-site request forgeries(クロスサイトリクエストフォージェリ)
CSRFとは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。
ユーザーが悪意のあるURLにアクセスしてしまった場合に、意図しないリクエストを特定のWebサービスに送られてしまうというものです。掲示板であれば意図しない投稿や、オンラインバンキングであれば意図しない送金処理などが他者によって行われてしまうみたいですね。
恐ろしすぎる。。。## ●@csr
ド・モルガンの法則をphpにて
# ド・モルガンの法則?
今の数学の先生はド・モルガンの法則教えるときに「これプログラミングでめっちゃ役立つので覚えておいてくださいね!」って強く言えるのいいなぁ
— Hardcore Engineer (@mpyw) November 17, 2022
復習してね♥ https://t.co/wSzEyN4R
最初はスパゲティコードでもいいからまず書く
スパゲッティは、たらこスパゲッティが好きです。最近は、大盛りで食べれません(笑)
スパゲティコードとは、処理が整理されていない複雑に入り混じったコードのことです。
業務的に言うと、後から修正しにくい、新規機能を追加しにくいコードのことです。作成する時も、機能を追加する時も、後から改修しやすい・自分以外の人が見てもわかりやすい(属人化しない)コードを書いたほうが親切です。
業務時間を減らすことにもつながるので、コスト面を考えても配慮したいポイントです。最近は、どのプログラミング言語もフレームワークが増えているので、気にせずともMVCモデルなどオブジェクト指向を取り入れてコードを書くことが多いと思います。
(現場にも寄りますが・・・笑)## 最初はスパゲティコードでもいいからまず書く
**コードは綺麗に書くことが大事です!**
と言っていますが、実際にコードを書く時は **「スパゲティコードでもいいから書く!」** ことをオススメしています。
コーディングは文章を書くのと同じで、書き始めると自然と筆が進むものです。
だから、 **考えるよりもまずは書きましょう!**##
PHPの変数の値をHTMLタグの属性値として使う。
# 前書き
PHPを利用してHTMLを書いていると、変数の値をタグの属性値にして使いたい時があったので、そのやり方
# コード
“`php:input_sample.php
input sample page
Web系エンジニア新卒1年目が入社半年後に感じた、初学者エンジニアに必要なスキルまとめ
# はじめに
文系出身で(ほぼ)未経験から、Webエンジニア職に就職した僕が入社後半年経って感じた、未経験エンジニアが率先して学んでおきたいスキル及び教訓をまとめてみました。
初学者の方の参考になれば幸いです。## 簡単な経歴
– 4年制文系私立出身(愛知県)
– 学生時代に3か月ほど大学生専用のプログラミングスクールに通う(言語:Ruby on Rails)
– 2022年新卒として都内エンジニア職に就職
– 使用言語:PHP(80%), Javascript(10%)
– 入社前研修としてhtml, cssの課題あり### 入社後~半年
– 4月~4月中旬:新卒研修
– 4月中旬~6月初旬:オンラインプログラミングスクール研修(PHP)
– 6月中旬:業務スタート# 教訓:「備えあれば憂いなし」
### 早めにプログラミング言語以外の知識にもアンテナを張っておくエンジニアを目指し始めたころは、htmlやcssだとか学んで得意げになってた自分がいます。。(コード書いている俺イケてる!的な)
ただ、就職してからはエンジニアとして働くにあたって、プログラミング・コーデ
AlmaLinux OS 9にPHP 8.1, PHP-FPM 8.1をインストール(AppStream)
# はじめに
Application Stream(AppStream)を利用してAlmaLinux OS 9にPHP 8.1をインストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)## サポート
本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2025-05がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。## LOG
### インストール
9.0系で出たプロダクトはモジュールではなかったが、9.1系で出たプロダクトはモジュールの模様
“`shell-session
# cat
Symfony3.4以降 — なぜ LaravelでなくSymfony ? —
こんにちは、株式会社CHAPTER-THREEの井川です。
Symfonyの日本語記事の少なさを少しでも解消し、Symfonyの魅了を少しでも届け、
ユーザーを増やすための記事です。# 前提
Symfony の言語仕様が今の形になった 3.4以降。今は、PHP8.0のAttribueに対応した6.0をベースに話を進めます。
>普段業務でやっているのですが、もし詳細に間違え等ありましたら直しますので教えてください!# 良質の資料の紹介から。
僕は、Symfonyのことを調べるのは、ほぼこの3サイト。
英語サイトは、ブラウザの翻訳の操作に慣れるとなんとかなります。– Symfony日本語入門【公式】
ここは、読み物として楽しい。やっぱり日本語だと読みやすい。https://symfony.com/doc/6.0/the-fast-track/ja/index.html
– Symfony公式サイト[英語]
仕事の調べ物はほぼこの公式サイト。上記の日本語入門を読んでおけば、どこを調べればいいのか大体検討がつきます。https://symfony.com
&&、||、!
### 「&&」
「&&」は複数の条件を1つにまとめる論理演算子で
日本語で言うところの「かつ」である。
2つ以上の条件式がどちらもtrueの時、全体もtrueになる。`$x` \= 10;
if(\$x \>5\&\&`$`x \<20)`` \{ echo \$xは5より大きい、かつ20より小さい'; \} →if文の条件式が共にtrueであったため、 `$`xは5より大きい、かつ30より小さいが命令される。 よって$xは5より大きい、かつ20より小さいが出力される。 ### 「||」 「||」は複数の条件を1つにまとめる論理演算子で 日本語で言うところの「または」である。 2つ以上の条件式がどちらもtrueの時、または片方でもtrueの時 全体もtrueになる。 `$x` \= 10; if(\$x \>5\|\|`$`x \>20)“&
Bitnami が提供する WordPress 用のイメージは PHP を更新することはできません
## はじめに
Amazon Lightsail for Bitnami WordPress を利用し作成されたサーバーの OS やミドルウェアの更新を検討していたが思わぬ所に躓いたので記事にしました
## 結論
タイトルの通り、 Bitnami が提供する WordPress 用のイメージを用いてサーバーを構築している場合
旧サーバー内のデータやコンテンツをエクスポートし、新サーバーにインポートする必要があります## どうすると良いか
– [Bitnami Documentation] に記載されているエクスポート方法として、 [All-in-One WP Migration] を利用する方法が記載されていました
https://docs.bitnami.com/aws/how-to/migrate-wordpress/
手順はとても簡単で
1. 旧サーバーで…
1. WordPress Plugin [All-in-One WP Migra
PHPのライブラリでQRコード®を作成する。(chillerlan/php-qrcode)
PHPのライブラリ(chillerlan/php-qrcode)を使ってQRコード®を作成しました。
# 本記事の環境
ホストOS:Windows10 Pro 64bit 8GB
ゲストOS:Red Hat Enterprise Linux release 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
PHP:PHP 7.4.15
Tera Term:4.105
Composer:Composer version 2.0.8 2020-12-03 17:20:38
chillerlan/php-qrcode:4.3.4
Google Chrome:96.0.4664.110
コマンドプロンプト
ホストOS側に実ソース# 手順1(ライブラリ導入)
* Tera TermでゲストOSに接続する。
* 作業用ディレクトリを作成する。
* 作業用ディレクトリ配下でディレクトリ作成コマンドを実施する。
“`
mkdir -p php-qr-code-generator \
複数のPHPバージョンをインストールし、ディレクトリごとに自動でバージョンを切り替える
# 概要
– 複数バージョンのPHPを使いたい
– ディレクトリごとに別バージョンのPHPを自動で切り替えたい
– phpビルドは難しいのでやりたくない
– MacとUbuntuに対応したい# Install brew
– [Brew](https://brew.sh/)をインストールします
– brewはmac専用だと思っていましたが、ubuntuにもインストールできるんですね# Install php
– phpをインストールします
– imagemagickなど必要に合わせて追加のパッケージもインストールできます
– 本記事では**PHPのインストールはbrewで行います。**
“`bash
brew update
brew tap shivammathur/php
brew install php@8.1
brew install php@8.0
brew install php@7.4
brew install pkg-config
brew install imagemagick
“`# Install phpenv
– phpenvをインストールします
–
文字列の連結、if文、比較演算子、真偽値、else文、elseif文
### ドット「.」を用いた文字の連結
文字列、変数の間に.を入力することで
文字列同士、変数同士、文字列と変数を連結することが出来る。\$name “=“ \’東方’;
echo \$name.\’仗助’;→東方仗助と表示
「.=」を用いると省略した書き方が可能
\$name “=“ \’東方’;
\$name .“=“ \’仗助’;
echo \$name;→東方仗助と出力
### 変数展開
ダブルクォーテーションで文字列を囲んだ場合に中の変数を
\{}で囲むとその部分が変数に入っている値に置き換えられる(変数展開)。
シングルクォーテーションで文字列を囲んだ場合は変数展開されず
\{}も含めそのまま文字列としてみなされる。\$name \= \’東方仗助’;
echo \”こんにちは、“{$name}“さん”;→ダブルクォーテーションで囲んでいるため\$nameの値(東方仗助)が出力される。
\
PHPのデバッグ導入手順(XAMPP + Laravel + Eclipse + Xdebug)
# はじめに
最近EclipseにXdebugの導入を行ったため、導入手順を備忘録として残します。開発環境
・windows10 pro
・XAMPP(php 7.4, Xdebug 3.1.6)
・Eclipse予めXAMPP,Eclipseの導入が済んでいる前提で話を進めていきます。
# Xdebugの導入
## ①Xdebugのインストール
まずはXdebugのインストールが必要になります。
公式サイトからXdebugをインストールします。ただしバージョンが複数あり、それぞれの環境によって選ぶバージョンが異なるため、下記のURLのサイトを使用します。
URL: https://xdebug.org/wizardこのサイトでは現在の自分の環境にあったバージョンを自動で選定してくれます。
それではまずXAMPPのダッシュボードに移動し、右上の「PHPinfo」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1291184/a9d3f1d9-9a11
【Laravel】クエリビルダでサブクエリを CROSS JOIN する方法
# crossJoinSub メソッドを使う
第一引数にサブクエリを定義したビルダー、第二引数にはエイリアス名(任意の識別子)を記述します。
“`php
// サブクエリ
$highPriceFruits = DB::table(‘fruits’)
->select(‘id AS fruits_id’, ‘name AS fruits_name’))
->where(‘price’, ‘>’, ‘500’);// サブクエリを CROSS JOIN する
$users = DB::table(‘users’)
->crossJoinSub($highPriceFruits, ‘hign_price_fruits’)
->get();
“`## 余談
サブクエリとの結合については、joinSub、leftJoinSub、rightJoinSubメソッドが用意されている旨の内容がドキュメントですぐに見つかりました。https://laravel.com/docs/
Laravel とある予約システムの 共通関数部分のメモ 02
### Laravelで使った、共通関数や、個別関数のメモです。(2記事目)
・記事01(Laravel とある予約システムの 共通関数部分のメモ 01)
https://qiita.com/tokotoko33ok/items/7263c77e88a2f72f6a2a“`php:Common_func.php
get();
}
【PHP】ざっくりオブジェクト指向 – アクセス権とカプセル化
# アクセス権を設定
アクセス権とは、クラス外からプロパティやメソッドへのアクセス可否の設定です。アクセス修飾子でプロパティとメソッドにアクセス権を設定します。アクセス修飾子は`public` `private` `protected`の3種類です。# `public`と`private`
`public`プロパティと`public`メソッドは、どこからでもアクセスできます。`private`プロパティと`private`メソッドは、クラス外からアクセスできません。同じインスタンス内であっても、`private`はクラスが違うとアクセスできません。![](https://storage.googleapis.com/zenn-user-upload/365a7b09a800-20221113.png)
この例では、すべてのプロパティを`private`、すべてのメソッドを`public`に設定しました。このようにすると、メソッドにはアクセスできますがプロパティにはアクセスできません。プロパティ`$sex`を`public`にすれば、メソッド`getSex()`は必要ないのでは
【PHP】ざっくりオブジェクト指向 – staticと遅延静的束縛
# staticプロパティとstaticメソッド
前回までは、インスタンスを生成してプロパティとメソッドを使いました。インスタンスのプロパティとメソッドとは別に、クラスのプロパティとメソッドにアクセスすることもできます。これらを`static`プロパティ(静的プロパティ)と`static`メソッド(静的メソッド、クラスメソッド)とよびます。`static`プロパティと`static`メソッドはクラスごとにあり、プロパティやメソッドのようにインスタンスごとにはありません。例えば、生成したインスタンス数`$number`をもちたい時に`static`プロパティを使います。生成したインスタンス数はクラスごとの値ですので、`static`プロパティに値をセットするのがよいです。また、`static`プロパティにアクセスするだけのメソッド`getNumber()`は、インスタンスにある必要がないので`static`メソッドを使うのがよいです。
![](https://storage.googleapis.com/zenn-user-upload/b91948cf4b61-20221113.