- 0.1. 雑学投稿系SNS Nijiki
- 0.2. PHP 基本文法
- 0.3. Stage-1/Lesson-1
- 0.4. PHPで画像アップロード・保存・表示・更新機能を実装してみた
- 0.5. docker、Laravel9環境にて、認証機能(ログイン機能)を作成する際、node.jsの問題が発生したので、その問題を修正する方法
- 0.6. phpをバージョンアップする際の簡易書式チェック
- 0.7. 【PHP】エラーハンドリング ~Exceptionクラス~
- 0.8. Dockerにて構築されたPHP(Laravel)環境で、MailHogを使ってメール送信処理をテストする
- 0.9. PHPのクラスについて
- 0.10. なぜ出力時のHTMLエスケープを省略してはならないのか
- 0.11. PHPからJavaScriptにデータを受け渡すときに考えること
- 0.12. 【CakePHP】git cloneして開発環境構築
- 0.13. BLOCS で エディタ / IDE のサポートを有効にする
- 0.14. [Laravel] sail 8.1 起動時エラーで立ち上げられなかった話。
- 0.15. 【Laravel】git cloneして開発環境構築
- 0.16. 【Drupal9】Docker × DDEVでDrupalローカル開発環境構築
- 0.17. 【PHP】イミュータブルな実装って何が美味しいの?
- 0.18. 関数の呼び出し(PHP)
- 0.19. Laravelで使えるテンプレートエンジン『BLOCS』を使ってみた!
- 1. ひよっこエンジニアにはBladeがややこしい!
雑学投稿系SNS Nijiki
みなさん、こんにちは。山田長政です。
最近、SNSを作ったので宣伝します。
Nijikiと言う名前の雑学を投稿するSNSを今回、製作しました。
使用したのは、データベース云々はDjango、Webサイトとかはphpです。
ちなみに、スマホで開くとデザインがバグるので注意してください。
https://nijiki.net
PHP 基本文法
– 趣旨
作りたいシステムを思いついて少しずつ取り組んでいる所なのですが、
現状の力量ではかなり難しいことがわかった段階です。
心が折れないように、わかったことをここに残しつつ、
少しでも進めていこうという気持ちで書いています。# 文字列を出力する
文字列 “Hello World!” を出力するには、前に`echo`をつけて全体を`` で囲むことで、ブラウザ上に表示できます。“`php:PHP
“`
“`:ブラウザでの表示結果
Hello World!
“`文字列は複数行記述もできます。その際、コード全体の見通しが良くなるよう改行も可能です。
ただし、ブラウザ上は改行されません。“`php:PHP
“`
“`:ブラウザでの表示結果
Hello World!Hello World!Hello World!
`
Stage-1/Lesson-1
:::note
未経験からWEBエンジニアへの学習ロードマップ
[Backend Developer](https://roadmap.sh/backend):::
# ウェブアプリケーションってなに?
[Webアプリケーションについて知ろう!](https://prog-8.com/docs/web-application)– HTMLだけで作られたWebサイトでは、作成者が更新しないかぎり毎回同じものが表示されます。
![1618360609241.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484172/8bbd105a-1e54-0fde-fabb-02645336d3f5.png)![1618361167779.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484172/15901b66-9e99-6dac-3432-a755a81d7730.png)
① ブラウザがサーバーにリクエス
PHPで画像アップロード・保存・表示・更新機能を実装してみた
## 画像アップロード・保存・表示・更新機能
PHPで画像アップロード機能を実装しました。
ログイン機能も同時に作っています。画像をアップロードすると、次の2つのphpファイルの同階層にあるimagesフォルダに
格納されるようになっています。画像アップロードページ
“`PHP:upload.php
docker、Laravel9環境にて、認証機能(ログイン機能)を作成する際、node.jsの問題が発生したので、その問題を修正する方法
# 概要
表題にも書いた通り、Laravel9にてログイン機能を作成する実装を行っていました。
laravel9では、`composer require laravel/ui`、`php artisan ui bootstrap –auth`のコマンド叩く事でログイン機能が簡単に作成できるみたいです。ただ、これらのコマンドを使用するには、`node.js` 関連をインストールする必要があり、そこで凄く詰まったので、その修正方法を説明したいと思います。# 修正方法
laravel9では、`php artisan ui bootstrap –auth`のコマンドを叩いてログイン機能を作る場合、`node.js`が必要(bootstrapの影響だと思われる)との事です。その為、`dockerfile`に`node.js`関連をインストールするコードを付け加えました。下記がその`dockerfile`です
“`dockerfile:
FROM php:8.1.13-bullseyeRUN apt-get update && apt-get install -y \
git
phpをバージョンアップする際の簡易書式チェック
# 概要
phpがサポート期限切れのためにバージョンアップが必要になったため既存コードを簡単にチェックする
(テストがきちんと作ってあればいいんですが今回は構文チェックで…)# 事前準備
とりあえずどんなエラーも見つけたいのでphp.iniでエラーレポートをすべて行うように変更しておく“`php.ini
error_reporting = E_ALL
“`# コマンド
findで対象ファイルを探して、grepでエラーがないメッセージは表示しないようにする
`find . -name “*.php” -type f -exec php -l {} \; | grep -v ‘No syntax errors’`# 実行例
適当なものがなかったので、昔のphpmyadminでやってみたらいろいろ出てました
自作のプログラムでこういうのが出ていたら修正ですね“`
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in ./p
【PHP】エラーハンドリング ~Exceptionクラス~
## PHPの例外処理
プログラムの異常終了を防ぐために、例外として処理する。
PHPではExceptionクラスを使う。
https://www.php.net/manual/ja/language.exceptions.php## Exceptionクラスの使い方
例外をスローする。(例外が発生することを例外を投げるという)
“`php
“`
例外が発生する可能性のあるコードをtryで囲み、例外を受け取った後のコードをcatchに記述する。“`php
“`変数$flgの値がtrueの時はOKと返し、falseのときに例外として返す。
“`php
Dockerにて構築されたPHP(Laravel)環境で、MailHogを使ってメール送信処理をテストする
# 概要
ローカル環境でメール送信処理をテストする際。
実際にメール送信されないようにしつつ、挙動をテストするため、MailHogを利用しました。
設定方法などメモします。# 環境
– PHP8.1系
– Laravel9系
– ローカル環境はDockerにて構築# 設定方法
## MailHogを導入
`docker-compose.yml`にMailHogの記述を追加します。(ここで立ち上がるコンテナが、ローカル用のSMTPサーバーとなります)
[DockerHubに公開されているイメージ](https://hub.docker.com/r/mailhog/mailhog/)をそのまま利用できます。“`yml
services:
mailhog:
image: mailhog/mailhog:latest
ports:
– “8025:8025”
– “1025:1025”
“``1025`はSMTPポート用、`8025`はHTTPポート用(ブラウザからMailHog管理画面にアクセスする用)として設定しています。
PHPのクラスについて
PHPのクラスについて学習した事のアウトプットです。
## クラス
クラスとは定数や変数(プロパティ)と関数(メソッド)をまとめたです。
※PHPマニュアルには”クラスの中にはプロパティそしてメソッドを含めることができる”と記載されている~~~md:SimpleClass.php
var;
}
}
?>
~~~
## 疑似変数 $thisPHPマニュアルには”メソッドがオブジェクトのコンテキストからコールされる場合は、 疑似変数 `$this` が利用可能。 `$this` は、呼び出し元オブジェクトの値”と記載されている。
サンプルコードを作成し考察する。
~~~md:SimpleClass1.php
なぜ出力時のHTMLエスケープを省略してはならないのか
メリークリスマス! 週末もPHPを楽しんでますか? :santa_tone2:
ところでWebセキュリティはWebアプリケーションを公開する上で**基礎中の基礎**ですよね! :innocent:メジャーな脆弱性を作り込まないことはWeb開発においては専門技術ではなく、プロとしての基本です。
中でも**XSS** (Cross-Site Scripting)やインジェクションについての考慮は常に絶対に欠いてはならないものです。現実にはプログラミングには自動車のような運転免許制度がないため、自動車学校に通わず独学で公道に出ることができてしまいます。つまりは基礎知識がないままにWebプログラマとして就職したり、フリーランスとして案件を請けることも現実には罷り通っています。それは**一時停止標識も赤信号も知らずにタクシー営業しているようなもの**です。
このような事情により、体系的な理解のないWeb開発初心者は *(時には**n**年のキャリアを持つ人でも)* 雰囲気による曖昧な基準でHTMLエスケープをしたりしなかっ
PHPからJavaScriptにデータを受け渡すときに考えること
PHPからJavaScriptにデータを受け渡す需要は多くあるので、把握しておくべきことをまとめます。
原則としてはPHPの値をJSONに変換することです。## 仕様について
**JSON**(JavaScript Object Notation)はJavaScriptのオブジェクトとリテラル記法に由来する部分集合として定義されました。JSONの仕様は[JSON.orgの説明](https://www.json.org/json-ja.html)と[RFC 8259](https://www.rfc-editor.org/rfc/rfc8259)などで定義されています。ざっくりとした理解はWikipediaなんかを見てもらうといいでしょう。
https://ja.wikipedia.org/wiki/JavaScript_Object_Notation
## データ型
PHPとJSONは基本的には似たようなデータ型を備えていますが、細かい点で違いがあります。
| データの種類 | PHPの型名 | JSONの型名
【CakePHP】git cloneして開発環境構築
# 0. はじめに
大阪の受託開発エンジニアの、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
CakePHPプロジェクトを`git clone`して、`vendor`や`.env`,`app_local.php`ファイルを作って`bin/cake server`するまでのメモです!## 0-1. 目次
> [1.環境構築](#1-環境構築)
> [2.初期設定](#2-初期設定)
> [Reference](#reference)## 0-2. 前提条件
– Gitインストール済み
– GitHub登録済み## 0-3. 開発環境
|key|value|
|:–:|:–:|
|OS|macOS|
|FW|CakePHP|
|バーション管理|Git/GitHub|
|パッケージ管理|Composer|# 1. 環境構築
## 1-1. git clone
“`terminal:local
$ mkdir cakephp
$ cd cakephp
$ git clone https:
BLOCS で エディタ / IDE のサポートを有効にする
最近のエディタや各種 IDE においては大体入力をサポートしてくれる機能があり、少ないタイプ数で、あるいは少々うろ覚えでも書き進めることができます。
ところで BLOCS という新しいテンプレートエンジンをリリースしました。こういう時に困るのが入力のサポートを受けられないことです。そこでいくつかのエディタ / IDE で BLOCS のデータ属性を入力する際にサポートを受けれるようにスニペットやライブテンプレートを用意しました。
ちなみに BLOCS はこちらになります
https://github.com/blocs/blocs
# Sublime Text で Snippets を使う
上記リポジトリの `snippets/SublimeText/*.sublime-snippet` を以下のディレクトリに置く
[Windows]
`~\AppData\Sublime Text\Packages\User\`[Mac]
`~/Library/Application Support/Sublime Text/Packages/User/`![sublimetext
[Laravel] sail 8.1 起動時エラーで立ち上げられなかった話。
sail 8.1 でLaravelプロジェクトを立ち上げたのだが、下記エラーがでた。
“`terminal
=> ERROR [ 4/11] RUN apt-get update && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 && curl 9.3s
——
> [ 4/11] RUN apt-get update && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 && curl -sS ‘https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae526
【Laravel】git cloneして開発環境構築
# 0. はじめに
大阪の受託開発エンジニアの、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
Laravelプロジェクトを`git clone`して、`vendor`や`.env`ファイルを作って`php artisan serve`するまでのメモです!
(※初期設定は必要に応じて実施してください。)## 0-1. 目次
> [1.環境構築](#1-環境構築)
> [2.初期設定](#2-初期設定)
> [Reference](#reference)## 0-2. 前提条件
– Gitインストール済み
– GitHub登録済み## 0-3. 開発環境
|key|value|
|:–:|:–:|
|OS|macOS|
|FW|Laravel|
|バーション管理|Git/GitHub|
|パッケージ管理|Composer|# 1. 環境構築
## 1-1. git clone
“`terminal:local
$ mkdir laravel
$ cd laravel
$ git cl
【Drupal9】Docker × DDEVでDrupalローカル開発環境構築
# 0. はじめに
大阪の受託開発エンジニアの、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
『Drupal 9 Web開発ことはじめ』記載の環境構築がうまくいかなかったのでメモ。https://nextpublishing.jp/book/12999.html
## 0-1. 全体の流れ
> [1.DDEV](#1-ddev)
> [2.Drupal](#2-drupal)
> [3.appendix](#3-appendix)
> [Reference](#reference)## 0-2. 前提条件
– `Docker`インストール済み
– `Homebrew`インストール済みhttps://www.docker.com/products/docker-desktop/
https://brew.sh/index_ja
## 0-3.開発環境
|key|value|
|:–:|:–:|
|Drupal|9|
|PHP|8.1|
|Docker|20.10.21|
|Home
【PHP】イミュータブルな実装って何が美味しいの?
## はじめに
保守的性の高いコードの書き方を調べているとイミュータブルなオブジェクトに関する話題を見つけました。## 調べてみる
### (そもそも)ミュータブルとは
– mutableは、可変という意味
– インスタンス(オブジェクト)の状態を変更できるインスタンス(オブジェクト)
– 想定していない更新が起こる可能性があるためイミュータブルより安全性が低い### (本題の)イミュータブルとは
– immutableは、不変という意味
– インスタンス(オブジェクト)の状態を変更できないインスタンス(オブジェクト)
– 変数に対して再代入をすることができないため、想定していない更新を防ぐことができる。ミュータブルより安全度が高い## 書いてみる
“`Sale.php
class Sales {
private $price;public function __construct(int $price){
$this->price = $price;
}
public function getPrice(): int
関数の呼び出し(PHP)
関数の呼び出しを使ったサンプルプログラムです
“`HTML
関数テスト
Laravelで使えるテンプレートエンジン『BLOCS』を使ってみた!
エンジニア歴1年、Laravel使用歴半年程度の私が、HTMLと親和性の高いテンプレートエンジン『BLOCS』を使ってみたので、使用感をご紹介します。
ひよっこエンジニアにはBladeがややこしい!
Laravelを使っている方であれば、標準のテンプレートエンジンであるBladeを使っている方がほとんどかと思います。
経験豊富なエンジニアであれば、Bladeを不便なく使うことができるでしょう。しかし、ついこの間PHPに触れたばかりのひよっこエンジニアにとって、Bladeを使ってテンプレートを作成することは、PHPでプログラムを行うのと大差ない抵抗感を覚えることも多いのではないでしょうか。例えば、コントローラーから受け取った“`$name“`という値をそのまま表示するだけであれば、Bladeで下記のように書けばよいだけです。
“`html:example.blade.phpHello, {{$name}}.
“`
ここまでは、初心者でも簡単に理解できます。
しかし、“`$name“`がある時だけ表示したいなど、ifの条件がある時には下記
PHPでPIDが存在するかチェック【file_exists vs posix_getpgid vs is_dir vs posix_kill】
# TL;DR
`posix_getpgid($pid)`を使うのがオススメ
https://stackoverflow.com/questions/9874331/how-to-check-whether-specified-pid-is-currently-running-without-invoking-ps-from
PHPでPIDがあるか確認する方法はいくつかあるが、最速を検討する
“`php
random_int(1, $pid_max), range(1,2**20));$start = microtime(true);