PHP関連のことを調べてみた2021年01月06日

PHP関連のことを調べてみた2021年01月06日

メール関連 勉強メモ

## メール関連の勉強メモ
### 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-apache

RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
“`

## 結論
最終的にはこの形になった。

“`dockerfile
# Dockerfile

FROM 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/host

2個目のカッコのは、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)

##事前準備
①新規フォルダ作成
②コンポーザーのインストール
③スカフォールドのインストール
④データベースの作

元記事を表示

OTHERカテゴリの最新記事