PHP関連のことを調べてみた2019年12月04日

PHP関連のことを調べてみた2019年12月04日

PHPでMIMETYPEから拡張子を判定する用の配列

#base64encodeされたデータから、MIMETYPEを取得して拡張子を判定したかった
Codeigniterに拡張子→MIMETYPEはあったけど
その逆はなかったので、配列のkeyから拡張子を判定できるような配列が欲しかった。

**ユーザーのアップロードで使いそうなのはこれくらい。**

“`php
$mimetypes = array();

// ZIP関係
$mimetypes[“application/x-7z-compressed”] => “.7z”;
$mimetypes[“application/x-zip-compressed”] => “.zip”;
$mimetypes[“application/x-gzip”] => “.gz”;

// 画像関係
$mimetypes[“image/gif”] => “.gif”;
$mimetypes[“image/jpeg”] => “.jpg”;
$mimetypes[“image/png”] => “.png”;

// Word
$mimetypes[“application/

元記事を表示

PHP基礎 Part6

# 概要
PHPの独学で学んだことをアウトプットしていく

# 前回の内容
[PHP基礎 Part5]
[PHP基礎 Part5]:https://qiita.com/aizawa_K/items/c3f089f5474381e4bd37

## 関数
関数とは、ある処理を一纏めにして実行する為のもの
予め用意されている「組み込み関数」と、自分で定義する「ユーザー定義関数」に分けられる

### 組み込み関数
strlen関数は文字列の文字数を値として返す関数
関数の中に入れる値のことを__「引数」__と呼ぶ

“`php:sample.php

“`
count関数は配列の要素数を数える関数である

“`php:sample.php

“`
rand関数は引数の間の数値をランダムに出力する関数である

“`php:sa

元記事を表示

MAMPでmysql_upgrade

MAMPを使ってSQLのお勉強と思ったら開始早々、以下のメッセージがログの中に出て、つまづいた。

“`
Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade.
“`

mysql_upgradeしろとあるが、コマンドラインから打ってもそのようなコマンドはありません、と返ってくる。

#MAMP→Tools→Upgrade MySQL databasesからできた。

スクリーンショット 2019-12-03 15.29.55.png

スクリーンショット 2019-12-03 15.36.12.png

元記事を表示

Laravel の “認可” まとめ(Gate, Policy 等)

## はじめに
この記事は [Laravel Advent Calendar 2019 – Qiita](https://qiita.com/advent-calendar/2019/laravel) の 4日目 の記事です?

「この認可処理はどこに書くべきか」みたいなディスカッションから
Laravel の認可機能を深掘りする機会があったので、
改めて整理してみたいと思います?

認証については、よろしければこちらも!
[Laravel の Guard(認証) って実際何をやっているのじゃ?](https://qiita.com/tomoeine/items/40a966bf3801633cf90f)

## そもそも “認可” とはなんなのか

**著者に対してだけブログ記事の更新を許可する**
みたいなやつが “認可” です。

“認可” を真面目に考察したら、それだけで一記事書けてしまう、深い深いテーマです:hole:

### “認可” についてのざっくりとした理解
いったんここでは、以下の理解で記事を進めようと思います。
(異論あればコメントにお願いします!)

– 特定

元記事を表示

[PHP]FizzBuzzゲームをifとforを使わないで作った結果www

#1.[range](https://www.php.net/manual/ja/function.range.php)で配列生成して[array_filter](https://www.php.net/manual/ja/function.array-filter.php)で抽出してから[array_fill_keys](https://www.php.net/manual/ja/function.array-fill-keys.php)で文字を埋めて[array_replace](https://www.php.net/manual/ja/function.array-replace.php)で合体して[array_map](https://www.php.net/manual/ja/function.array-map.php)で要素を出力

“`fizz_buzz.php

元記事を表示

Moodle 3.7 マニュアル – AMP をインストールする

[原文](https://docs.moodle.org/37/en/Installing_AMP)

AMP, stands for Apache, MySQL & PHP. This is not the only platform on which Moodle runs but is the most common and fine for basic installations.

(略)
Contents

1 First a word about PostgreSQL
2 Mac OS X(略)
3 Linux
4 Windows(略)
4.1 Installer packages and components(略)
5 Vista and Windows 7(略)

First a word about PostgreSQL

If you would prefer to use the PostgreSQL database (and you should consider it) you can – when using the package type insta

元記事を表示

Moodle 3.7 マニュアル – カテゴリ:管理者

[原文](https://docs.moodle.org/37/en/Category:Administrator)

注:現在私達は、ドキュメントを再構築して、先生と管理者を一緒にしているところです。したがって、このカテゴリは消える運命にあります。Category:Site administration が、サイトの管理設定のドキュメントページとして使用されることができます。

__管理者__ドキュメントのページのインデックスです。
サブカテゴリ

このカテゴリには、17 のサブカテゴリがあり、全部で 17 あります。

A

Accessibility
Authentication

B

Blog

C

Course

E

Environment
Error

I

Installation

M

Mac OS X

N

Notes

P

Performance

Q

Quiz

R

Restrict access

S

Search
SQL databases

T

Themes

U

Usability

W

Workshop

Pages in cat

元記事を表示

Moodle 3.7 マニュアル – Unix 又は Linux への インストール

[原文](https://docs.moodle.org/37/en/Unix_or_Linux_Installation)

以下のページには、Unix 又は Linux に特化したインストールの情報があります。この情報は、Moodle コミュニティにより提供されたものであり、完全にはチェックされていないかもしれず、(しばしばとても)古いかもしれません。有益であればということで提供されています。

* Step-by-step Installation Guide for Ubuntu(翻訳準備中)
* Installation on Ubuntu using Git(翻訳準備中)
* [Red Hat Enterprise Linux へのインストール](https://qiita.com/intrajp/items/150e0beedca270d8ded0)
* FreeBSD Installing(翻訳準備中)
* Installing Moodle on Debian based distributions (翻訳準備中)

カテゴリ:[インストール](https://qii

元記事を表示

【Laravel6】日本語化

## 内容

laravelに追加した認証処理とかを日本語化したい

## やったこと

1.設定ファイルのlangをjaに変更

2.コマンド実行
https://readouble.com/laravel/5.6/ja/validation-php.html
にある下記コマンドをコマンドプロンプト/VSCodeターミナルで実行するとディレクトリが作成される
(Windows環境ではまだ試していません。)とあるが問題なく可能

“`.sh
php -r “copy(‘https://readouble.com/laravel/5.6/ja/install-ja-lang-files.php’, ‘install-ja-lang.php’);”
php -f install-ja-lang.php
php -r “unlink(‘install-ja-lang.php’);”
“`

3.jsonファイル追加

下記を追加して、それぞれの置き換え文言を追加していく

“`resources/lang/ja.json
{
“Register”: “参加登録”,
“L

元記事を表示

Laravelでページャーを常時表示する

# やりたいこと
Laravelのデフォルトのペジネータは2ページ目がないと非表示になってしまう。
これを常時表示したい。

# やりかた
`php artisan vendor:publish –tag=laravel-pagination`を実行し、ペジネータのテンプレートを出力する。
`/resources/views/vendor/pagination/bootstrap-4.blade.php`に出力されたファイルを編集する。

“`php:bootstrap-4.blade.php
@if ($paginator->hasPages())

元記事を表示

書かないに越したことはない

> The most readable code is no code at all.

最も読みやすいコードは、無いコードだ。(訳しにくい。。)

> Every line of code you write is a line that has to be tested and maintained.

コードを書いたらテストしないといけない。それにメンテしないといけない。

> By reusing libraries or eliminating features, you can save time and keep your codebase lean and mean.

ライブラリを使うか、機能を削るかして、時間を節約し、コードベースを無駄のないものにできる。

全て、[The Art of Readable Code(リーダブルコード)](http://shop.oreilly.com/product/9780596802301.do “readable_code”)より。

ふむふむ。確かに。さて、

***理念を実現するには仕組みが必要だ。***

という

元記事を表示

【Laravel】基本的なルーティングのまとめ

#はじめに
現在Laravelについて学習しています。
その学習の履歴として今回はルーティングについてまとめました。
ざっくりとまとめているので、大枠を掴むためや復習のために見ていただけると幸いです。

#ルーティングについて
今回はHTTPメソッドgetについてまとめます。
全部で9種類です。
ルーティングは下記の形式です。

“`php:
Route::get(‘URL’, ‘処理’);
“`

処理がクロージャとアクションの場合に分けて説明します
クロージャとは`function(引数)`のことで無名関数という意味です。
アクションとはMVCのコントローラに含まれるものです。
クロージャの場合は6種類で、アクションの場合は3種類です。

#クロージャーの場合
処理がクロージャの場合について解説します
##1. URLからテンプレートをレンダリング
URLからテンプレートにレンダリングする場合について解説します。

“`php:routes/web.php
Route::get(‘/’, function () {
return view(‘welcome’);
});

元記事を表示

2019年phpカンファレンス③~改善失敗して学ぶ、
レガシープロダクトに立ち向かうチーム作り。~

2019年phpカンファレンスでの『改善失敗して学ぶ、
レガシープロダクトに立ち向かうチーム作り。』の講演について、思ったことをまとめてみました。

# 講義資料

# 話を聞いてみて
組織づくりには土台の考え方を固めることが重要なのだと感じました。

失敗を恐れない、挑戦をする。

これは良く言う話ですが、それ以上に「改善する」というフェーズや考えを持てるかがすごく重要なのだと感じました。

# 真似してみたい施策
### 技術負債箱
あ!これ治したい!!
けど、、、今じゃない、、、、、、

っていう負債は結構多く見かけます。
今じゃないけど、「あれ、3時間ぐらい猶予出来たんじゃない?」って時に触って、ちょこっと直して、対応したいというものを準備しておくのは意外と重要かもしれません。

あと負債を洗い出しておけば、負債が再度発生することを抑制できるのではないか。
これって負債だよ

元記事を表示

Web開発勉強のためWordpressでポートフォリオサイトを開設するまで①

Web開発を勉強するにあたり、まずは独学で下記のサイト・サービスを利用してみました。

・Progate
https://prog-8.com/
→言語の違いについては学べたが、もう少し難しいほうがいいと思いやめる。

・Ruby on Rails チュートリアル
https://railstutorial.jp/
→Rubyのバージョンの違いなど細かな違いのせいか、同様のコマンドを入力してもエラーが頻発。
いろいろ調べて解決するも、肝心のHerokuデプロイがどうしてもうまくいかず挫折。

あとは海外のサイトなので忘れましたが、言語別にFizzbuzzやらアルゴリズムを解くサイトを覗いて、アルゴリズムがわかっても初心者にすぐ実装できるスキルなぞあるはずもなく挫折。

ここまでで1か月ぐらいは消費したと思います。

その後、2か月ぐらいQiitaを眺めて興味ありそうなワードはネットで調べて、みたいなことを繰り返してました。
ムダに知識だけが増えていって、典型的な「わかる」けど「できない」使えない人間への道を歩んでいますw

さすがに手を動かさないとマズいかなーと思い、かといって上記のよ

元記事を表示

PHPUnitで特定のクラス群だけのテストカバレッジを算出する

この記事はうるる [Advent Calendar 2019](https://adventar.org/calendars/4548) 3日目の記事です。

# はじめに
今回はPHPUnitにおけるカバレッジを、特定のクラスにだけ絞って算出する方法を紹介いたします。

テストカバレッジは、一般的に高ければいいというものでもなければ、低くてもいいというものではありません。
そのサービスにおいて最適な品質保証として、どの程度テストを網羅していればいいかどうかは、サービスにより異なります。

もちろんカバレッジを100%にしてあるに越したことはないですが
開発コストなどを考えると、どうでもいい機能はテストを書きたくないし、その代わりに重要な機能に対してはちゃんとテストコードを書きたい
なんてこともあると思います。

この重要な機能に対してのみのカバレッジを計測したいという思いから
特定のクラス群のカバレッジを計測しましたので、その紹介をしたいと思います。

# システム構成
今回使用するアプリケーションは
Laravel5.5を使用しています。
PHPは7.0、PHPUnitは6.5.1

元記事を表示

【CakePHP2】formタグのスコープ外からformの内容をcontrollerに送信

## やりたいこと

formタグの外にあるボタンやリンクでもcontrollerに値を渡したい

## やったこと

“`test.ctp
Form->create(‘HogeList’, [‘type’ => ‘GET’]); ?>

PHPer(ペチパー)な僕がPythonではまったお話

# PHPプログラマでしたがPython初めました。
最近長年連れ添ってきたPHPを捨て(てはないですが)Pythonを
触り始めました。
そこで一つ長年PHPを書いていた僕が
Pythonで書き始めて はまった所なんかをまとめます。

## まず初めに
ぱっとPythonのソースを見て思ったこと

– 行末の「;」がないことへの不安感が半端ないです。
⇒ 慣れましょう。
– `if`,`for`等にカッコが無いので閉じる部分がどこなの?という不安。
⇒ 慣れましょう。

Pythonでも末尾「;」とか書いても問題はないようですが基本書かないようです。
カッコについては、PHPでは

“`php
メインの処理
{
処理の途中でまとまりの良いもの
あわばよく後で関数化するかもしれないもの
}
“`

のように、まとまったもの(まとまりが良いもの)にカッコをつけるという
使い方をしていたので少し不便に感じます。

## 本編(処理について)
いくつかPHPと違う(PHPの方が異端というお話はおいておいて。。。)ために
はまった点を記載します。

### 関数の引

推測せずに計測してLaravelパフォーマンスチューニング

# はじめに

Laravelで開発した検索APIを、blackfireというプロファイラーを用いてパフォーマンスチューニングをしたので、その知見を共有します。

https://blackfire.io/

blackfireには有料プランが存在しますが、本記事で扱う内容は全て無料プランの範囲内です。

## この記事で扱うこと

– **僕のプロジェクト**を高速化した方法

## この記事で扱わないこと

– blackfireのインストール方法
– blackfireでの計測方法

→ いずれも[ドキュメント](https://blackfire.io/docs/up-and-running/installation)や[先人の記事](https://qiita.com/search?q=blackfire)を参照してください。

– **あなたのプロジェクト**を高速化する方法

→ 自力で見つけて下さい。本記事はそのヒントとなることを目指しています。

# 前提条件

– PHP: 7.3
– Apache: 2.4
– MySQL: 5.7
– Laravel: 5.6.

MACBOOK PROでMAMPを利用したDATABASE作成でつまづいた話

備忘録として書き残すので大した内容ではありませんがもし同じように悩む人の役に立てばこれ幸い也。

勉強書「スラスラわかるPHP 志田仁美 著」

##経緯
PHPの勉強でホームページ制作。コンテンツ内に掲示板を作成することにした。当方MACBOOK PRO でMAMPを使って環境構築し順調に設計していたがMySQLで作成したデータベースが読み込めない。ぜんぜん読み込めない。why?

![スクリーンショット 2019-12-03 14.50.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517245/9ef32197-6f74-97a6-1088-50ae9b77226e.png)

##原因
phpの記入ミスやMySQLのデータベースに正しくログインできていなかったのでは?とうろたえて数日経過。
なんてことはない。
自身のPCにMySQLをインストールしてデータベースを使用していただけだった。
MAMPにはローカル開発環境を立ち上げるために必要なソフトウェア(Apache、MySQL、P

ID