PHP関連のことを調べてみた2020年03月02日

PHP関連のことを調べてみた2020年03月02日

array shapes記法(Object-like arrays)と旧PSR-5記法で型をつける

この数年でPHPでの開発でもCI(継続的インテグレーション)はかなり活発に行われるようになり、PHPUnitなどのテスティングフレームワークのほか、PHPStanやPhanなどのツールによる静的解析も浸透しつつあります。

関数/メソッドの引数と返り値、そしてオブジェクトのプロパティは比較的に型がつけやすいところですが、現状で無法地帯な箇所があります。そうです、配列の内部構造です。実際のところ、PHPDocに `@param array` や `@return array` と書くことは `mixed` と書くのとあまり大きな違いはありません。

ご存じの通り、PHPの配列は、[動的配列(可変長配列)](https://ja.wikipedia.org/wiki/%E9%85%8D%E5%88%97#%E5%8B%95%E7%9A%84%E9%85%8D%E5%88%97)と[連想配列(ハッシュテーブル、マップ)](https://ja.wikipedia.org/wiki/%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)の特徴を併せ持ったデータ構造であり、配

元記事を表示

Mac laravelの環境構築を行う

# 目的

– 初心者向けの環境構築方法をまとめる

# 実施方法概要

1. PHPのパッケージ管理プログラムComposerのインストール
1. laravelのインストール
1. 確認

# 実施方法詳細

1. PHPのパッケージ管理プログラムComposerのインストール
1. 下記リンク先にアクセスする。
– [https://getcomposer.org/download/](https://getcomposer.org/download/)
1. リンク先の「Manual Download」に記載されているバージョン名部分をクリックする。(今回は1.9.3をダウンロードする。)
![スクリーンショット 2020-02-27 22.57.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/d94870d7-45c4-644f-002b-e9072f017e41.png)
1. ダウンロードが開始される。

元記事を表示

laravelの学習のために音楽レビューを投稿できるサイトを作成した

Web製作会社でマークアップエンジニアとして1年業務を行いました。
その中で、今後はバックエンドに携わっていきたいと思いPHPの勉強を始め、laravelでウェブサービスを作ってみました。
まだまだ、理解していないところがあるので引き続き勉強します。
## トップページ
![full.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584078/51704a0b-009f-f991-3249-c8269476dc76.png)
トップページはメインビジュアルとサービスの紹介です。
下の方にある「投稿一覧ページへ」のボタンから投稿一覧へリンクします。
## 投稿一覧ページ
![full2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584078/94060c9e-8bd4-828e-9e82-f307d5933aae.png)
検索フォームにテキストを入れると該当のテキストが入力されている投稿だけ表示します。
「投稿一覧詳

元記事を表示

LaravelでISO-2022-JPのメールを送りたい

Laravel でメールを送信すると、デフォルトでは文字コードが UTF-8 になります。
そこで、ISO-2022-JP で送信する方法を考えてみました。

# 前提
– Laravel 6.12

# やり方1
まずは、 `Mailable` クラスで頑張るやり方です。

コンストラクタの中に処理を追加します。また、 `withSwiftMessage()` の中でも `setCharset()` と `setEncoder()` をコールしています。

“`php:app/Mail/CustomerRegistered.php
namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Swift_DependencyContainer;
use Swift_Mime_ContentEncoder_PlainContentEncoder;
use Swift_Preferences;

cla

元記事を表示

三角形 is-a 多角形なんて嘘じゃん!―継承を利用する前にこの問題に正解してください【php】【オブジェクト指向】

#0. 初めに
本記事の結論は
> 各フィールドに対するgetter, setter, changerのオーバライドの有無は統一する必要がある

この一言に尽きます。

本記事は、僕がつい最近まで勘違いしていたことをまとめた記事です。
オブジェクト指向で「継承」の機能を利用する場合の細かいルールについてです。
(親クラスのメンバと子クラスのメンバは別物であるとか、子クラスでオーバライドしなかったメンバがアクセスするフィールドとか)
その細かいルールを知らないとどんな問題が起きるか、また、どのようなルールになっているのかをこの記事ではまとめます。

#1. 問題
第5章※2のコードは、子クラス(三角形クラス)でsetter, getter, フィールドを変化させるメソッド(changer)の3種類をオーバライドしたりしなかったりを試し、三角形インスタンスのgetterがどのような値を返却するか実験するものです。実験結果を予測してみてください。
予測したら、実際にコードを実行して確認してみてください。
全問正解だった場合、本記事を読む必要はありません。
問題は全部で16問あります。

#

元記事を表示

【Laravel】フォームリクエストでバリデーションをしよう

入力フォームやクエリパラメータをフォームリクエストでバリデーションする方法について解説します。

#フォームリクエスト作成
まず、フォームリクエストを作成します
ターミナルから下記のコマンドで作成しましょう
下記のコマンドで`app/Http/Requests/`ディレクトリに`SampleRequest.php`という名前のRequestクラスを作成できます

“`:ターミナル
php artisan make:request SampleRequest
“`

#SampleRequestクラスについて
作成されたSampleRequestクラスで確認しましょう
`SampleRequest`クラス内に`authorize`メソッドと`rules`メソッドができていると思います

##rulesメソッドはバリデーションの規則を定義する
下記のように`rules `メソッドを定義すると、`title`、` body`それぞれに対して下記のような条件を設定しています。
`title` カラムには必須、`post`テーブル内での一意性、最大文字数を255に設定しています。
`bod

元記事を表示

[Ubuntu]PocketMine-MPのサーバーを立てる

PocketMine-MPをUbuntuで立てます
初記事がこんなのでいいのかな。ハハッ

##サーバー環境
・ConoHa VPS
・OS Ubuntu 18.04
・メモリ 512MB
・ストレージ SSD 20GB
・CPU 1core

##ポート開放
今回は例として19132ポート。
コマンドで打つべきなのは`#`とか`$`が先頭についてる奴だけです
つまり下で`Rules updated`って書いてあるのは打たなくていいんですわよ

“`
$ ufw allow 19132/udp
Rules updated
“`
##ユーザー作成
今回は例として`pmmp`という名前のユーザーを作ります

“`
$ adduser pmmp
Adding user `pmmp’ …
Adding new group `pmmp’ (1004) …
Adding new user `pmmp’ (1000) with group `pmmp’ …
Creating home directory `/home/pmmp’ …
Copying files from `/e

元記事を表示

【Laravel】ルーティングを甘くみてたら痛い目にあった話

#web.php のルーティングは甘くみちゃいけない話
練習用で画像投稿機能つきの簡単なウェブアプリを制作しています。
PHP/Laravel学習歴3ヶ月ほどのプログラミング初学者の僕が個人的な備忘録として記述しました。

#とりあえず書いておけば良い!と思っていた自分

web.phpにはとりあず必要なものを記述しておけば良いと思っていた。
しかし、エラーが表示されたり、表示されなかったとしても、思い通りに関数が機能してくれないなど問題ばかり発生して、結果的に解決するのに数日を要した。

###初めに記述したルーティング(間違い)

“`
—(略)—
Route::group([‘middleweare’ => ‘auth’], function () {
Route::get(‘/’, ‘StoriesController@index’);
Route::post(‘/stories/create’, ‘StoriesController@store’);
Route::post(‘/stories/create’, ‘StoriesControl

元記事を表示

製薬企業研究者がPHPの基本的な文法についてざっくりまとめてみた

# はじめに

ここでは、PHPの基本的な文法をざっくりとまとめてみます。

# 基本的な記述方法

PHPは`.php`という拡張子のファイルに記述します。
HTMLのソースコードの中で`

元記事を表示

スパイを利用してテストコードを書いてみた

## 概要
### 背景
テストコードのデザインパターンとして[Arrange-Act-Assertパターン](http://wiki.c2.com/?ArrangeActAssert)というものがあります。
一般的にはこのAAAパターンに従う事で、わかりやすいテストコードが書けますが、実はこの方法で書けない場合があり、ずっと気になっていました。

### 結論
メソッドの差し替えや返り値の検証を行う必要がなく、メソッドが想定通りに呼び出されたかを検証したい場合は、「**スパイ**」を使う事で、よりわかりやすく書きなおせる事がわかりました。

## 詳細

### 実行環境
– PHP 7.2
– Laravel 6.0

### スパイとは?
メソッドの呼び出し情報(コール回数など)を記録し、テスト対象の実行後にアサートできるようにするものです。

スパイに関するより詳しい内容は、以下の記事をご参照ください。
– [Mockery1.0:テストダブル作成](https://readouble.com/mockery/1.0/ja/creating_test_doubles.html)

元記事を表示

jupyter-php環境を構築してみた

#はじめに
Virtualboxで稼働中のCentOS8に、jupyter-PHP環境を構築してみたので、その備忘録として残しておきます。
※本環境では、jupyter-PHPで使用するPHPは、brewでインストールした最新バージョン「7.4」を使用するものとする。

#前提条件

・OS環境は、Virtualboxで稼働中のCentOS8.1です。以下、OS詳細情報となります。

“`php
# cat /etc/centos-release
CentOS Linux release 8.1.1911 (Core)
“`

・Virtualboxのネットワーク設定は、「NAT」「ホストオンリーアダプター」で構成。

・OSの初期設定が完了していること。

・jupyter環境が構築済みであること。
※私の環境ではAnacondaの中に含まれている、jupyterを使用。詳細は、[これ](https://qiita.com/yes_dog/items/54e24261331ef7895160)を参照してください。

・Linuxbrewの環境が構築済みであること。
Linux

元記事を表示

初めてのWEBアプリ作成(1)

#はじめに
 初めまして、RHEMS技術研究室所属の白瀬です。
今回は初めてWEBアプリ作成としてTrello風ToDoリストを作成するまでの工程を投稿していこうと思います。間違った点がありましたらご指摘いただけると嬉しいです。
環境はmacのdocker,iTerms2を使用しています。
#コンテナ構築
 nginx・PHP・MYSQLのコンテナの構築をdockerで行いました。!
今回はnginxとPHPの連携させずに作って行きます。
![(無題).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562494/7f5b8adb-c241-e781-fe5b-e839b10d8b47.png)
#全体のディレクトリ
“`
├── docker-compose.yml
├── nginx
│ └── nginx.conf
├── php
│ ├── Dockerfile
│ └── php.ini
├── mysql
│ └── data
└── www
└── html

元記事を表示

PHPでGoogle Calendar API を使って空き時間を抽出してみた

# PHPでGoogleカレンダーから空き時間を抽出するプログラムを書いてみた

# 背景
 筆者は現在就職活動中なのですが、たびたび**LINEやメールで「直近で空いている日程をいくつか教えてください」**と言われることがよくあります。
 元々自分がスマホで字打つのがあんま好きじゃないのもあって、そのたびに**毎回Googleカレンダー見て、空いてる日程をスマホで打ってまたGoogleカレンダー見て…**というのが面倒だったのでGoogleカレンダーから空き時間を抽出するプログラムを作ろうと考えた次第です。

# 概要
 GoogleカレンダーAPIのFreebusyをPHPで叩いて空き時間を抽出します
 本稿では、翌日から2週間以内の10:00~20:00の間で空いている時間の取得を目標とします。
 現状、開始時刻と終了時刻を入力した予定のみ対応しており、「全日」の予定には対応していないため、今後対応予定です。

# 前提
– 0,1のビット演算が分かる
– PHPをググりながらなら書ける
– GoogleカレンダーAPIをPHPで利用するための準備が済んでおり、予定の追加や取

元記事を表示

PHP: ダブル・シングルクオートの違い

$test = “test”;

シングルクオートは文字として認識してくれる
var_dump(‘シングル: $test’);

ダブルクオートは変数として認識してくれる
var_dump(“ダブル: $test”);

JSの場合(変数として認識してくれる)
let test = “test”
console.log(“ダブル:” + test);

元記事を表示

PHPでお問い合わせフォームを作る

W3SchoolsのPHPチュートリアルでお問い合わせフォームを作成しました。
https://www.w3schools.com/php/default.asp

###環境
PHP 7.3.6

###作成したページ
![first.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533114/124a2191-8969-9979-ac0e-f6ee2fec01b0.png)
見た目cssで整えています
###コード
“`php:index.php




PHP ContactForm


元記事を表示

ユーザーの論理削除(ソフトデリート)の実装手順

# はじめに
論理削除(ソフトデリート)の実装手順をメモします。

– バージョン
php: 7.2
laravel: 5.8
– Authは実装済みでユーザーも登録済みであること

# usersテーブルにdelete_atカラムを追加
下記コマンドでカラム追加用のマイグレーションファイルを作成する。

“`
$ php artisan make:migration add_column_softDeletes_users_table –table=users
“`

マイグレーションファイルを下記のように編集する。
up関数とdown関数に下記を追記する。

“`

元記事を表示

PHPだけでWordpressのDBダンプ

#概要
プレーンなphpファイル1本だけでDBダンプやってみました。
Wordpress用ですがwp-config.phpの代わりにdefineを設定すればほかのCMSにも応用可能です。

#注意事項
ローカル環境で興味本位に試した方法なのでレストア・セキュリティ考慮まったく無しです。
実際のサーバー環境での使用は激しくお勧めしません。
**もしこのプログラムをコピペして使用する際は何が起きても全て自己責任でお願いします。**

#実装
“`php:wp/dump/Terminator.php

元記事を表示

専門学校生がLaravelとjQueryで抽選機作ってみた(機能紹介編)

# はじめに
初投稿です!!
2019年の11月あたりから夏休み中に独学したLaravelで、成人式の交流会のために制作しておりました。
今回の記事は主に機能の説明をして、開発エピソードはまた今度にしていこうと思います。
[GitHubのリポジトリ]https://github.com/kbc18a11/Lottery
[実際に制作したもの]https://seizinshikilottery.herokuapp.com/
今回作ったもののトップページです。
![トップ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500157/8ee6649c-da34-6a65-3873-b9ed0bad955f.png)

#使用技術
* Laravel
* jQuery
* Bootstrap
* MySQL
* Heroku

#実装した機能
■ユーザー関係
ユーザー登録
ログイン・ログアウト

■大会関係
大会主催
大会検索
自ユーザー主催大会一覧表示

■当選関係
当選種類作成
当選種類編集
当選種類削除

元記事を表示

LaravelのMYSQLのコマンド一覧【随時更新予定】

# はじめに
MYSQLのコマンドを覚える度に記録しています。

# 目次
– MYSQLの起動
– MYSQLの接続
– データベースの選定
– テーブル名一覧
– テーブル内構成一覧
– テーブル内の保存データ一覧
– テーブルの削除

## MYSQLの起動

“`
$ sudo service mysqld start
“`
余談ですが、下記エラーが出るとMYSQLが起動していない可能性があります。

“`
$ SQLSTATE[HY000] [2002] Connection refused
“`

## MYSQLの接続

“`
$ mysql -u root
“`

接続に成功すると下記表示になります。

“`
mysql>
“`

## データベースの選定

“`
mysql> use データベース名
“`

## テーブル名一覧

“`
mysql> show tables;
+——————–+
| Tables_in_myhiking |
+——————–+
| admins

元記事を表示

【Laravel 7】便利そうな機能その1 簡単になったルートキー名のカスタマイズ

## 前提
id と name カラムをもつ Users テーブルがあるとする。

`/users/userのid` にアクセスしたとき、ユーザーの名前が表示されるようにするには、以下のように書く。

“`web.php

Route::get(‘users/{user}’, UserController@show);
“`

“`UserController.php

public function show($user)
{
return $user->name; //画面にユーザーの名前を表示;
}

// $user には User::find(指定されたID) が入る

“`

`/users/userのid` ではなく、
`/users/ユーザー名` みたいにアクセスしたいとき、
つまりキー名のカスタマイズをしたい表示ときはどうするのか?

## これまで(Laravel 6.xまで)のやり方

“`User.php
public function getRouteKeyName()
{
return ‘name’;
}

//

元記事を表示

OTHERカテゴリの最新記事