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

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

PHP 変数の誤用

PHPを勉強中です。
サンプルプログラムを作成していて、思ったように動作しないことがあります。
いろいろ、さんざん調べた挙句、変数名が違っていることが往々にしてあります。
たとえば、$_SESSIONを$SESSIONと記述していたりなどです。
PHPのビルトインサーバーやデベロッパーツールにエラーが表示されれば、助かるのですが、そのような方法は無いのでしょうか?

元記事を表示

【SEO】レガシーなサイトの表示速度を16倍早くした話

# 前置き
運営しているサービスがかなりレガシーなので、やった内容は大したことないです。
(負の遺産が多い…)

入社した頃からサイトの速度が遅いなと感じていながら、日々の業務を追われているうちに後回しになっていました。
それから半年たったある日、SEOに注力する方針となり上司からサービスのサイトの表示速度が遅いので、本日中に何とかしてほしいとのことでようやく時間を割いて対応することになるのでした。

# 実施結果
先に実施した結果をまとめておきます。
サイトの表示速度を「5800ms」から「350ms」まで改善…およそ**16倍**の速度改善をすることが出来ました。

![スクリーンショット 2018-12-21 16.42.27 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288712/12ef1d4f-fb98-8058-b679-93b9a8603e02.png)

# 環境
* PHP 5.2
* Breeze framework
* MariaDB 5.5.62

# 速度改善で要

元記事を表示

PHPの終了タグは「?>」を付けるか付けないかは判断しようねという話

◼️理由は終了タグを省略することでファイルの最後にある余空白文字が出力に影響することを防ぐ
◼️htmlでは改行コードを半角スペースとして認識する
◼️htmlテンプレートなどに記述する際は週s量タグは必要

参考:
https://thesaibase.com/php/end-tag

元記事を表示

【PHP】headerでリダイレクトしよう

#はじめに
開発はフレームワーク(Laravel)を使いまくり、その中身(PHP)のことはあんまりわかってなかったので、
その勉強も兼ねて、PHPだけでリダイレクト処理を作ってみたときに学んだことをまとめてみます。

#headerとは
生の HTTP ヘッダを送信する関数。
要するに、リダイレクトさせることができるPHP標準の関数です。笑

#使用例
例えば、フォームから投稿する時を考えます。
まず、投稿ページからフォームで_POSTを飛ばします。

“`PHP:create.php



“`

そして、送った先でDBに接続して、保存の処理を行います。
こちらについては、またいつか詳細をまとめたいと思います!!
そして、headerで一覧ページ(index.php)にリダイレクトします。

“`PHP:save.php

//DB接続して、保

元記事を表示

未経験半年で作成したWebアプリを、実務半年経ったのでリファクタリングしてみた

皆さんは最初に書いたコード覚えていますでしょうか。

#目的

18年の12月にPHPを勉強し始め、19年の3月頃からLaravelを勉強し始めました。
その後、19年の5月20日から6月15日までLaravelを使ったオリジナルアプリを作りました。

当時Twitterで行われている100DaysOfCodeというものを行っており
活動時間とかわかればいいなーと思い作りました。

作った当初は良いと思っていたのですが、エンジニアとして現場に出て半年、久々に見るとひどいなと思い
何がだめだったのか、供養がてらリファクタリングしてみようとやってみました。(※厳密にはリファクタリングではありません->若干挙動に修正が入っているため)

なお、ユーザーが全く居ないのでデータ移行は考慮してないです

もっとこう出来る等ありましたら、ぜひ教えていただけますと幸いです。

#作ったもの

動作リンクは[こちら](https://github.com/natsume0718/Laravel-Uroboros)

##Topページ
– Twitterで登録・ログインを押すと、ソーシャルログインが行わ

元記事を表示

コード書かずに超スピード開発~(DEMO動画あり)~最新版『 Laravel DB.com 』

## Laravel DB.com ってなに?

「LaravelDB.com」は、ER図(テーブルの設計)を作成することで、”Migration” OR ”CRUD(テストデータ)”のコードまで生成できるサービス(ツール)です。

##DEMO動画(操作方法)


en.jpgPHP/MySQLを使った掲示板をherokuでデプロイする流れ

ローカルで作った掲示板をheorkuに移行する際、めちゃくちゃ苦戦したのでまとめておきます。

#手順

##1. herokuに登録する
ここで、登録はクレジットカードの登録もしなければなりません。
クレジットカード登録ができなければMySQLを使うことができませんでした。
デビットカードでもできると思いますが、三井住友銀行のデビットでは無理でした。
楽天のデビットで登録しました。

##2. heroku CLIをインストールする
https://devcenter.heroku.com/articles/heroku-cli
正直これは僕もよくわからなかったので、このサイトの手順通りにやっていったら大丈夫だと思います()
これでherokuのコマンドが使えるようになるはずです?

##3. アプリを作成

“`
$ heroku login
“`

ここでアプリのファイルがまとまっているルートディレクトリに移動してください。git管理するイメージです。

“`
$ heroku create アプリ名
“`

アプリ名の指定がなければ自動で割り当てられます。
また、アプ

元記事を表示

Laravel で Cloud KMS を使って暗号化/復号化をしてみた。

こんにちわ! @ktoshi です!

以前、[Cloud KMSをGoで使う](https://qiita.com/ktoshi/items/1fd4f808c955d33c3d28) 記事を書きましたが、今回は PHP(というよりLaravel)で使ってみようと思います。
実際はGoより先にこっちで使い始めてたのですが、諸々あり後発の記事になりました。
そんなわけではじめましょー。

# Cloud KMS
暗号鍵をセキュアに管理できるGCPのサービスです。
自動ローテーションやIAMでの権限管理でセキュアなアクセスを実現できる上、APIを利用した暗号化/復号化を行えるので非常に柔軟な利用が可能です。
類似したサービスはAWSの「KMS」や Azureの「Key Vault」などがあります。

# Key Ring と Key
Cloud KMS では Key を Key Ring で管理しています。
関係性は字のごとく、鍵と鍵束ですね。
ある程度同じ用途で使用される鍵については同じ Key Ring でまとめておくとよいでしょう。
実際に暗号化などで利用されるのは Key となり

元記事を表示

PHPでフォームを作成する基本

##フォームの基本

– 入力画面
– 確認画面
– 完了画面

index.php → confirm.php → thanks.php
と作る場合が多い

その場合、formのaction属性をそれぞれの飛び先に指定する

##入力フォーム

“`php


Moodle マニュアル 3.8 – アップグレードの警告

[原文](https://docs.moodle.org/38/en/Upgrade_warnings)

# アップグレードの警告

もしあなたが安定板からのアップグレードの最中の警告からこのページにたどり着いたのなら、おそらく我々のブランチのいくつかの変更が影響しています。

もしあなたが最も最近の Moodle の安定版にとどまる事を意図しているのなら、適切な MOODLE_3x_STABLE ブランチ (MOODLE_32_STABLE, MOODLE_33_STABLE その他のように) を使用してチェックアウトを変更する必要があります。

Git を使用しているのなら、リモートブランチを追跡する新しいローカルブランチを作成してそれにスイッチする必要があります。

“`console
git checkout -b MOODLE_38_STABLE origin/MOODLE_38_STABLE
git pull
“`

38 を関係する Moodle のバージョンに置き換えてください。最初の行により、MOODLE_38_STABLE という新しいローカルブランチが作成さ

元記事を表示

変数で計算結果を保管

### 変数
– PHPの場合、変数名を`$`から始める必要がある
– 変数は`$`から初めて、英語や英語_数字などで作成する
– 例:`$abc`、`$abc_123`
– `$合計` などの日本語も一応使えるけど基本的に使わない
– 記号や空白が含まれていたり、先頭が数字の場合は使えない
– 大文字小文字の設定は自由だけど、基本的にPHPの変数は小文字で書いたほうがいい
– 変数名は小文字と大文字を完全区別するので、一部でも異なると「別の変数」と見なされてしまうので注意
– 例えば全て小文字の場合、一部を大文字にすると別の変数となってしまう
– 変数は、最初に『代入』と言う操作を行う

“`

“`
– 変数名(上記の場合は$sum)の次に`=`を書き、その後に記憶したい内容や、保管したい内容を記述する
– ルールはprintのパラメーターと同じで`’`(クォーテーション記号)を入れてあげるとそのまま文字列として記憶される
– クォーテーション記号がなければ計算式として「計算結果」を代入して

元記事を表示

オブジェク指向

### オブジェクト
– 関連する変数(値)と関数(動作)が一つにまとまり、そのまとまりに名前がついたもの。
– 関連した変数や関数を「一つのオブジェクト内」で宣言することで、管理しやすくなる。
– オブジェクトには「クラス」「インスタンス」と言う2つの側面がある。
– クラス
– 設計図。オブジェクトを作るには、まずクラスを宣言する必要がある。
– 設計図なので、どんな変数(値)でどんな関数(動作)にするのか考えて、クラス内部で宣言する。
– 関連した変数や関数はこの時点(クラス)で決定。
– インスタンス
– クラス(設計図)から生成された実体。モノ。
– 設計図だけあっても関数を使うことができないので、クラスから実体を生成する。

– メモ

“`
format(‘G時 i分 s秒’));
?>
“`

– $today と format は `->` で繋がっている
– これは$todayと言うDateTimeメソッドの、インスタンスのメソッドを使

元記事を表示

ZipArchiveで突然”ZipArchive::addFromString(): Invalid or uninitialized Zip object”が出る様になった話

# はじまり
ZipArchiveで以下の様なコードを実行していたが、PHPのアップデートを行ってから急に“ZipArchive::addFromString(): Invalid or uninitialized Zip object“ が出て正常に動作しないようになった。

“`php
open(tempnam(sys_get_temp_dir(), ‘foo-‘), ZipArchive::CREATE);
$zip->addFromString(‘bar.txt’, ‘hogehoge’);
$zip->close();
“`

調べてみると “$zip->open()“ の部分で失敗している様子。

# 原因の調査
## PHPの確認
アップデート前のサーバがたまたまあったので、適当なコードを書いて比較してみることにした。
CentOS 7でPHPはremi-php72でインストール。

“` php:検証用コード

元記事を表示

【最速】PHPでCSVファイルを保存する方法

# はじめに
最近laravelを使う機会が多く、CSVをエクスポートする機会があったので簡単ながらメモしておきます。

# コード

“`php
// csvデータ作成
$csv = array(
array(“名前”, “色”, “値段”),
array(“りんご”, “赤”, “10O”),
array(“バナナ”, “黄色”, “200”),
array(“みかん”, “オレンジ”, “120”)
);

// header作成
header(‘Content-Type: application/octet-stream’);
header(“Content-Disposition: attachment; filename=data.csv”);

// csv出力
foreach ($csv as $line) fputcsv(fopen(‘php://output’, ‘w’), mb_convert_encoding($line, ‘SJIS’, ‘UTF-8’));
“`
laravelのルートを通し、処理を実行するとcsvファイルをダウンロードす

元記事を表示

Mac に phpenv + virtphp で PHP の仮想環境を作る

# Overview

Mac に phpenv + virtphp で pyenv + virtualenv のような環境を作った時のメモ。次回同じ作業をすることになった時のために残しておく。

# phpenv

phpenv と名のリポジトリは複数あるが、星の数が多いこちらを使うことにした。

https://github.com/phpenv/phpenv

phpenv 自体のインストールは簡単。README どおりにやればすぐ終わる。[installer](https://github.com/phpenv/phpenv-installer) もある。

ただ、php-build (phpenv install で必要) でつまずく。

大体は共有ライブラリが足りないって怒られる。そこは一つ一つ対応。

このあたりはメモをロストしました。。まぁなんとかやれるはず。

最終的には[こちら](https://qiita.com/fruitriin/items/3028c2e2170e3e93459d)の記事のとおりに実施すれば解決した。感謝。

“`
$ phpenv ver

元記事を表示

[Rails<=>PHP] nl2br は simple_format

# タイトルで書きたいことはほぼ全て終わった
あとは詮方無いこと、うだうだとかいてみる。

#### `simple_format`は`nl2br`より複雑。
1. デフォルトで`

`が入る
2. `simple_format(text, {}, wrapper_tag: ‘div’)`でタグを変更することはできるが、消せない。
3. `\n`が2行以上続くと`

`が挿入され、文章が区切られる。

##PHPの関数`nl2br`はRailsだと`simple_format`。

“`rb:hoge.rb
motoko = “根拠ですって?\nそう囁くのよ、私のゴーストが””
simple_format(motoko)
// 出力結果 =>
//

根拠ですって?
//そう囁くのよ、私のゴーストが

“`

不満があるので、耳と目を閉じ、口をつぐんで孤独に暮らそうと思います。

元記事を表示

Brew で PHP7.3 の PHP IMAP Extension をインストールする方法 (MacOS)

参考記事: macos – OSXでPHP 72にIMAPを追加する
https://tutorialmore.com/questions-1754536.htm

ありがとうございます!

kabel/php-ext とは、stable ではない、Core PHP Extension の Homebrew Package マネージャーレポジトリ。

PHP Imap Extension PHP7.2 に加えて、 7.3 も追加されてて助かった

## インストール方法

“`
brew install kabel/php-ext/php@7.3-imap
“`

ただし、公式にサポートされていないので、気をつけるように!

元記事を表示

PHP 2進数, 8進数, 10進数, 16進数の変換

####たまにしか触れなそうなので備忘録としてメモしておきます。

まず、英単語の確認から、、、

2進数 【binary number】
8進数 【octal number】
10進数 【decimal number】
16進数 【hexadecimal number】

“`php:qiita.php
$number1 = 55;
echo decbin($number1).”\n”; //10進数→2進数 110111
echo decoct($number1).”\n”; //10進数→8進数 67
echo dechex($number1).”\n”; //10進数→16進数 37
echo base_convert($number1, 10, 16); //任意の基数を変換 37

$number2 = 100110;

echo bindec($number2).”\n”; // 2進数→10進数 38
echo octdec($number2).”\n”; //8進数→10進数 32840
echo hexdec

元記事を表示

Python, Ruby, JS, PHP における文字列処理の違い(結合と変数展開)

趣味や仕事で多くの言語で開発している際に、
単純な構文で書き間違えが多いので書き起こします。

特に解説はせずリファレンスとコードのみ記載します。

# 文字列配列の結合

## Python

[str.join(iterable) — Python 3.8.1 ドキュメント](https://docs.python.org/ja/3/library/stdtypes.html#str.join)

“`python
strings = [‘fizz’, ‘buzz’];
merged_strings = ‘ ‘.join(strings)
print(merged_strings) # ‘fizz buzz’
“`

## Ruby

[Array#join (Ruby 2.7.0 リファレンスマニュアル)](https://docs.ruby-lang.org/ja/latest/method/Array/i/join.html)

“`ruby
strings = [‘fizz’, ‘buzz’]
merged_strings = strings.join(‘ ‘)
p

元記事を表示

AWSでWordPressを始めてハマった話

# はじめに
突然「よーしパパAWSでWordPress頼んじゃうぞー」と思い立つ。

まずは検索。
https://www.google.com/search?q=aws+wordpress

情報いっぱいあるし、**余裕だな**。

# アカウントを作る
[AWS アカウント作成の流れ](https://aws.amazon.com/jp/register-flow/)
**簡単そうだな**。

[スケーラブルなウェブサイトの構築方法:フェーズ 1
サーバー 1 台構成で WordPress 環境を構築](https://aws.amazon.com/jp/getting-started/projects/scalable-wordpress-website/01/)
スケーラブルにはしないのでサブネットの設定などは必要無いのだが、特に考えずにチュートリアルの通り進める。
見本の画面と実際の画面がところどころ違うが、大した問題ではない。
**簡単すぎる**。
# WordPressでハマる
無事にインスタンスが起動した。[フェーズ 1-5](https://aws.amazon.c

元記事を表示

OTHERカテゴリの最新記事