- 1. メール関連 勉強メモ
- 2. LaravelのユニットテストでDBにないエラーを明確にする
- 3. Laravelで明確配列タイプをする
- 4. Re-wirte test-case with magic numbers 1, 2, 4
- 5. Laravelコードを見直す
- 6. LaravelでFormRequestを使ってバリデーションする方法
- 7. PHP学習備忘録
- 8. Laravelはじめました
- 9. PHP 数値の3桁の区切りカンマを打つ
- 10. Laravelプロジェクトの構築メモ①
- 11. WordPressで管理画面のサイドメニューからカテゴリー、タグを削除する
- 12. PHP: 通貨の表示
- 13. 【PHP】Laravelのデバッグ・変数の確認方法(var_export, dump, dd関数)
- 14. 【PHP】mb_send_mailでうまく改行されないときに気をつけること
- 15. ポートフォリオのアプリを公開したらイタズラされまくった話
- 16. PHP Debug + Xdebug Ver3.X系 はphp.iniに追記する設定項目が違うよって話
- 17. 開発環境(Docker)のPHPのバージョンを7.2.11から7.4.xにアップデートした時にハマったこと
- 18. xamppでlocalhost以外の設定・バーチャルホスト(Windows10)
- 19. get_the_terms()を使って、公開された記事が登録されているタームの一覧を取得する方法
- 20. 【Laravel】初学者向け 簡単マルチログイン機能
メール関連 勉強メモ
## メール関連の勉強メモ
### MTA(メール転送エージェント:Message Transfer Agent)
* ネットワーク上でメールを転送・配送するソフトウェア。
* メールを受け取って次の適切な配信先を決定するのが主な役割
* 配信先への送信・転送はMDAが行う
* 利用者とのメール送受信やMTA間のメール送受信にはSMTP通信プロトコルが標準的に用いられる。
* SMTPサーバーのプログラムの1つ
電子メールクライアント(MUA)・・・メールソフトのこと#### 種類
* Sendmail
* Courier-MTA
* Postfix
* qmail
* Exim
* Apache James
* Microsoft Exchange Server### qmail(きゅーめーる)
* メールサーバーソフトウェア・MTA
* Sendmailの問題点を解消するためにつくられた。### 特徴
– 設定がシンプル
– Sendmail,Postfixと互換性なし
– セキュリティが強固
–
LaravelのユニットテストでDBにないエラーを明確にする
### Problem
When `seeInDatabase` asserting was failed, I can’t not known where the path of properies is not match.
Example: With bellow test, I will receive the bellow message.
##### Test code:
“`php
$this->seeInDatabase(‘les_knowledge’, [
‘lesson_id’ => $lesson->id,
‘number’ => 1,
‘content_en’ => ‘~ years old DIFFFFFFFFFF’,
‘explanation_en’ => ‘In Japan, you are born as a 0 year-old and turn 1 on your first birthday.’,
]);“`
##### Test result:
Laravelで明確配列タイプをする
### The origin code
“`php
public function get_user_badge(array $user_ids, array $course_ids, Carbon $from, Carbon $end, $direction = ‘desc’){}
“`### Refactoring 1: clarify array type
##### Util Classes
“`php
use Illuminate\Support\Collection;class IntegerCollection extends Collection
{
public function __construct(int …$values)
{
parent::__construct($values);
}
}class UserIds extends IntegerCollection {}
class CourseIds extends IntegerCollection {}
“`##### The code will rewrite
Re-wirte test-case with magic numbers 1, 2, 4
The original code
“`php
private client_fixture(){
return Client::firstOrFail();
}
private message_fixture($client, $count = 1, $adjust_min_version = 0, $adjust_max_version = 0){
return factory(Notification::class, $count)->create([
‘app_version_min’ => $client->version + $adjust_min_version,
‘app_version_max’ => $client->version + $adjust_max_version,
]);
}public function it_returns_only_messages_for_correct_app_version(){
Laravelコードを見直す
After reviewing the code for the new team members, I found long/wrong codes. I write it down here.
## Content
* [1. Use default params when getting value from request](#write_better_laravel_code__chapter1)
* [2. Use Eloquent *when* function](#write_better_laravel_code__chapter2)
* [3. Use Eloquent *updateOrCreate*](#write_better_laravel_code__chapter3)
* [4. Use map instead of bundle if/else](#write_better_laravel_code__chapter4)
* [5. Use collection when you can](#write_better_laravel_code__cha
LaravelでFormRequestを使ってバリデーションする方法
Controllerが肥大化(MVCの宿命)してしまうのを少しでも解決するために、バリデーションはFormRequestを使って処理するのが良さそうだったので、自分用のメモとして使い方をまとめてみた。
# FormRequestとは
バリデーションルールを外部クラス(FormRequestクラス)にまとめることができ、任意の処理で呼び出すことができる
FormRequestを下記のようにDIしてあげると、バリデーションが通った時だけコントローラー内の処理が走るようになります
このようにバリデーションを外部クラスで処理することでControllerでは自分の処理に専念することができる“`php
public function store(StoreRequest $request)
{
// バリデーションが通ったときにここの処理が走る
}
“`# 使ってみる
`artisan`コマンドで作成できる“`bash
php artisan make:request StoreRequest
“`“`php:StoreRequest.php
namespace
PHP学習備忘録
去年の10月から新人プログラマとして開発に挑戦しています。
以前は運用系の業務だったため、自分で何かを作って動かすのはほぼ未経験です。
今までは、研修でJavaを覚えてきましたが、新たにPHPを覚えることになりそうなので、PHPについて色々調べてみました。
なかなか物覚えはよくない方なので、自身の備忘録としてここに残しておこうと思います。#PHPについて
PHPとは正式名称は「Hypertext Preprocessor」と呼ばれているとのことです。
ハイパーテキストって書かれている通り、WEB開発で非常に使われている言語になっているようです。
(私はPHP初心者なのでまだ細かいことはわかりませんが…)
簡単にWEBサイトを作成できることでおなじみの「WordPress」もPHPがベースになっています。#PHPの記述
PHPはHTMLの中に記述できます。拡張子は.phpとなります。
HTML内で記述する際はbodyタグの中に書きます。HTML文書内に記述する場合、文頭は、が締めとなります。
ただ、PHPだけで記述されたphpファイルは?>で締めな
Laravelはじめました
#Larave(ディレクトリ構成)
本日からLaravelを触り出したので自分の勉強記録として投稿していこうと思う。
簡単にディレクトリ構成から勉強。
(フレームワークを余り触ったことがないので混乱)ディレクトリ構成
–
| 1 | 2 |
|:-:|:-:|
| app | アプリのメインとなるところ |
| bootstrap | 初期処理やキャッシュ |
| config | アプリの設定 |
| database | データベース(マイグレーション) |
| public | 画像,JS,CSS |
| resources | blade(HTML的な) |
| routes| アプリのURL設定など |
| storage | セッションやログ |
| tests | テスト用 |
| vendor | Composerの依存内容 | ()# 設定ファイル(隠しフォルダにあり)
– codeフォルダの歯車マーク押して、show hidden filesをクリック
– .envフォルダを開く“`言語:ph
PHP 数値の3桁の区切りカンマを打つ
# 目的
– PHPで数値の3桁の区切りカンマを打つ方法まとめる
# 情報
– 下記サービスを用いて動作確認を実施
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
1. number_format関数を使用する。
1. 例えば「1000」を「1,000」のようにカンマを打ってほしい場合、下記のようにする。実行すると「1,000」が出力される。“`php
echo number_format(1000);
“`1. 変数`$num`に格納された数値の3桁区切りのカンマを打ち、再び変数`$num`に格納する場合は下記のようにする。
“`php
$num = 1000;$num = number_format($num);
echo $num;
“`# 参考文献
– [https://www.php.net/manual/ja/function.number-format.php](https://www.php.net/manu
Laravelプロジェクトの構築メモ①
*使用するもの*
・Mac OS
・MAMP
・Visual Studio Code
・Laravel6
・phpMyAdmin#Laravelアプリケーションを立ち上げる手順
###ターミナル操作
①MAMPのhtdocsに移動(ここでプロジェクトを作成するため)
`Applications/MAMP/htdocs`②composerコマンドを使ってLaravelプロジェクトを作成する(今回は6系のものを使用する)(アプリ名はmyappとする)
`composer create-project laravel/laravel myapp –prefer-dist “6.0.*”`③htdocsからmyappに移動する
`cd myapp`④いくつか権限を変える
`chmod -R 777 storage`
`chmod -R 777 bootstrap/cache`###MAMPの設定
①MAMPを立ち上げる②preferencesの中のServerへ移動し、Document rootを変更する
Document rootを先ほど作成したアプリの中のpu
WordPressで管理画面のサイドメニューからカテゴリー、タグを削除する
ワードプレスのテーマtwentynineteenを基盤に、管理画面のサイドバーメニューからカテゴリーやタグを削除する実装を行ったので、備忘録的にこの記事を残す。
# 環境情報
PHP:version 5.3.3
WordPress:version 5.1.8
WPテーマ:twentynineteen# 既存の投稿 と 既存のカテゴリー、タグ
“`functions.php
//サイドバーメニューからカテゴリー、タグを削除(既存の投稿と既存のカテゴリー、タグ)
function remove_menu() {
remove_submenu_page(‘edit.php’, ‘edit-tags.php?taxonomy=category’);
remove_submenu_page(‘edit.php’, ‘edit-tags.php?taxonomy=post_tag’);
}
add_action(‘admin_menu’, ‘remove_menu’);
“`# カスタム投稿 と 既存のカテゴリー、タグ
“`functions.php
//サイ
PHP: 通貨の表示
Ubuntu でライブラリーのインストール
“`bash
sudo apt install intl
“`“`php:currency_yen.php
#! /usr/bin/php
【PHP】Laravelのデバッグ・変数の確認方法(var_export, dump, dd関数)
PHPのデバッグ方法がいくつかあるらしいので調べてみた。
####PHPの場合
1. [var_export関数](#1-var_export関数を使う)
2. [error_log関数](#2-error_log関数)####Laravelの場合
1. [dump関数](#1-dump関数)
2. [dd関数](#2-dd関数)
##PHPの場合のデバッグ方法
###1. var_export関数を使う
`var_export`関数で変数の中身を確認することができる。よく使われる`var_dump`よりも有効性が高く、出力は有効なPHPコードになる。
・`var_export ( $expression [, bool $return = false ] )`
“`
php > $obj = array(“a” => 1, “b” => 2, “c” => 3);
php > var_export($obj);
array (
‘a’ => 1,
‘b’ => 2,
‘c’ => 3,
)
“`出力結果が`array(‘a’
【PHP】mb_send_mailでうまく改行されないときに気をつけること
#【PHP】mb_send_mailでうまく改行されないときに気をつけること
###使用環境
* XAMPP 8.0 (PHP 8.0)
* windows 10##背景
websiteを制作していてお問い合わせページから送られてきたメールで改行コードがそのまま出力される、改行できていないという事態が発生。##原因
改行コード“`\r\n“` をシングルクォーテーションで囲んでいたため、文字として出力されていた。>文字列を指定する最も簡単な方法は、引用符 (文字 ‘) で括ることです。
引用符をリテラルとして指定するには、バックスラッシュ (\) でエスケープする必要があります。 バックスラッシュをリテラルとして指定するには、二重 (\\) にします。 それ以外の場面で登場するバックスラッシュは、すべてバックスラッシュそのものとして扱われます。 つまり、\r や \n といったおなじみのエスケープシーケンスを書いても特別な効果は得られず、 書いたままの形式で出力されます。
[PHP公式マニュアル](https://www.php.net/manual/ja/lang
ポートフォリオのアプリを公開したらイタズラされまくった話
#はじめに
私は過去にLaravel等の技術を使用して「朝活SNS」アプリを個人開発し、
AWSのEC2上で、一般公開していました。(転職活動時)アプリの紹介記事をQiitaにも投稿したところ、
→[AWS, Docker, CircleCI, Laravelでポートフォリオを作成してみた【参考リンク付き】](https://qiita.com/nasuB7373/items/0e507abad2017976c407)
有難いことに300LGTMもいただくことができ、多くの方に
実際にポートフォリオアプリを触ってもらえたものの、結構いろんなイタズラもされしまっておりました。^^;実装の詰めが甘かったところもあり、その脆弱性を突かれたイタズラ等もあったので、
アプリはデプロイして終わりなのではなく、運用フェーズに入ってからも気を抜いてはいけないのだと実感しましたね。。こちらの記事では、そんなイタズラの数々や、それに対策できた部分について簡単にご紹介できればと思います。
#1.下ネタ投稿をされまくる
これは予想はしていました・・笑
投稿機能のあるアプリなら、ありがちなイタ
PHP Debug + Xdebug Ver3.X系 はphp.iniに追記する設定項目が違うよって話
## はじめに
[Mac PHP Visual Studio Code Xdebugを用いたローカル開発環境でデバッグをできるようにする](https://qiita.com/miriwo/items/6edd6e1817def4fc11d5)
↑の記事を参考にXdebug + PHP Debug環境を構築していたら、– phpInfoではXdebugの存在を確認できる
– var_dump()もそれっぽい挙動をしてくれる
– でもブレークポイントで止まってくれないといった状況で少々「むむむ・・・」となった。
## 解決方法
Xdebugは正常挙動っぽいのでおそらくVSCode側の何かしらが原因だろうと思い、
ひとまずVSCodeのPHP DebugのDetailsを確認![スクリーンショット 2021-01-05 6.19.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246580/940f01ce-7009-8a3d-d6b2-4e85dfd086a8.png)
めちゃくち
開発環境(Docker)のPHPのバージョンを7.2.11から7.4.xにアップデートした時にハマったこと
開発環境のPHPのバージョンを7.2.11から7.4.xにアップデートするために、既存のDockerfileを編集することになった。
## 実現したかったこと
開発環境(Docker)のPHPのバージョンを7.2.11から7.4.xにアップデートする。“`dockerfile
# Dockerfile
# ↓これを7.4.xにしたい
FROM php:7.2.11-apacheRUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
“`## 結論
最終的にはこの形になった。“`dockerfile
# DockerfileFROM php:7.4.13-apache
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& docker-php-ex
xamppでlocalhost以外の設定・バーチャルホスト(Windows10)
#概要
内容はタイトルの通り。メモ程度。#編集するファイル
・〜xampp/apache/conf/httpd.conf
(・〜xampp/apache/conf/extra/httpd-vhost.conf)
・C:/Windows/System32/drivers/etc/host2個目のカッコのは、htdocs以外をドキュメンルートにする場合に編集します。今回はhtdocs以下にバーチャルホストを作成するを想定しているので、ここはパス。
#内容
httpd.confを適当なエディタで開き、ServerNameと検索します。“`
ServerName localhost:80
“`
という表記が見つかると思います(ポート番号は設定により変わるので、80じゃない人もいると思います)。この下にServerName IPアドレスを追加します。ここではIPアドレスを192.167.10.10としておきます。IPアドレスがわからない人は、コマンドプロンプトでipconfigを実行してください。
“`
ServerName 192.167.10.10
“`
これでh
get_the_terms()を使って、公開された記事が登録されているタームの一覧を取得する方法
#どうも7noteです。いろいろ調べて結局wordpressの関数では標準装備されてなかったので無理やり取得したった話。
登録されているタームの一覧や、記事が存在する(下書き・非公開を含む)タームだけを取得するのは`get_terms()`でできるが、
**`get_terms()`だと公開されている記事が登録されているタームだけ取得することができません**でした。## 解決方法
“`php
$posttype = ‘ここにポストタイプ’; // 投稿タイプ
$taxonomy = ‘ここにタクソノミー’; // タクソノミー$posts = get_posts( array(
‘post_type’ => $posttype,
‘taxonomy’ => $taxonomy,
‘posts_per_page’ => -1, // 「-1」で全投稿取得
‘post_status’ => ‘publish’, // ←重要:公開記事のみ
));
foreach ( $posts as $post ){
$pub_term
【Laravel】初学者向け 簡単マルチログイン機能
##初めに
ここでいうマルチログイン機能とは、「userの他に更にもう1つ管理者などのログイン機能を追加する」ことをイメージしています。他サイトでもマルチログイン機能の実装はありますが、初学者には少し難しいものが多かった気がします。私がかなり苦戦したので、初めての人でも実装できるようにまとめました。
実装しながら書いているので、コピペして頂ければマルチログイン機能は実装できるはずです。書き間違えないように気をつけます。。今回はAグループとBグループという名前をつけて分けています。名前を自由に変更してください。よくあるのは「user(利用者)とAdmin(管理者)」でしょうか。基本的に全てA・Bの2個ずつファイルが必要です。途中から書くのが億劫になったので、説明はAグループのみになっています。
前置きが長くなりましたが、それではいきます。##環境
PHP 7.2.34 / Laravel 6.20.5 / phpMyAdmin 4.9.3 /(MacBook)##事前準備
①新規フォルダ作成
②コンポーザーのインストール
③スカフォールドのインストール
④データベースの作