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

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

プログラミング入門メモ

# プログラミング作成から実行までの流れ
* コンパイラ系言語
プログラムをコンパイラに渡してコンパイルしてもらう。全行一発で翻訳するため早い。しかし、タイポなどが実行までに分からないデメリットがある。

* インタプリタ系言語
プログラムをインタプリタを通して実行する。一行ずつ機械語へ翻訳するため実行速度が遅い。しかし、コーディング中にタイポがわかるメリットがある。

# PHP
以下の特徴がある。
* HTML埋め込み型のプログラミング言語
* サーバサイドスクリプト言語
* OSL
* 数多くの機能が装備されている

## HTML埋め込み型のプログラミング言語とは?
PHPはHTMLの文書の中に部分的に埋め込んで記述する。動的に表示を変更することができるため、Webアプリケーションの作成に向いていると思われる。

## サーバサイドスクリプト言語
PHPはウェブサーバ側で動くためこのように呼ばれる。ウェブサーバはapache

### クライアントサイド言語もあるよ
主にJavaScriptがそうです。Webページでの入力値をチェックしたりします。

## オープンソース

元記事を表示

Moodle 3.8 マニュアル – OPcache

# OPcache

訳者注:この記事は PHP5 および Moodle2 のものとなるため、参考にとどめてください。

標準 OPcache extension は強く推奨されます。Moodle 2.6 から、それは PHP 開発者により唯一公式にサポートされているものです。利点はパフォーマンスの向上と圧倒的に少ないメモリ使用率です。しかしながら、opcode キャッシュ extension はsuPHP(デフォルト WHM 上の / cPanel Linux サーバー) などのある共通のタイプの高セキュリティ PHP ハンドラーを使用するように設定されたサーバと互換性がありません。

![Opcache_error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470368/87bc85e5-5d07-181b-7b74-be117662c2f6.png)

内容

[1 インストール](#1-インストール)
[2 設定](#2-設定)
[3 Opcache 管理プラグイン](#3-opcache管

元記事を表示

外為で勝つために その5 ~ Laravel 編

前回「[外為で勝つために その4 ~ LINE 通知編](https://qiita.com/Kazuya_Murakami/items/6dce328bd988bfcafd98)」の続きです。

ご無沙汰してます。
ポータルサイトを作るための材料を用意したり、NISA で株の買い付けしたりしてました。
今年もどうぞよろしくお願いします。

ポータルサイトを作るにあたり、
チャートなどを表示するために、データベースに接続する必要があります。

データベース接続といえば PHP ですが
ここはオシャレに Laravel フレームワークを使いたいと思います。
PHP だけでも構築できますが、勉強も兼ねてということで。

## PHP バージョン確認
早速問題になるのが PHP のバージョンです。
今回導入する Laravel は 6.7.0 で、土台として PHP 7.2 以上が必要なのだそう。

Raspberry Pi の標準的なインストール方法では PHP 7.0.33 までしか入りません。

“`
$ php -v
PHP 7.0.33-0+deb9u6 (cli) (built

元記事を表示

PHPStormのTemplateを設定してdeclare(strict_types=1)を常に設定する

# PHPStormのTemplateを設定してdeclare(strict_types=1)を常に設定する

PHP7から`declare(strict_types=1)`が導入され、設定している場合は暗黙的な型変換が行われなくなり、より厳密にタイプヒンティングをチェックするようにできます。

しかし`declare(strict_types=1)`はファイル単位でしか効力が無いため、常にファイルの冒頭に書かなければいけません。

これを矯正するためにPHPStormに設定を追加します。

スクリーンショット 2020-01-24 18.38.47.png

PHPStormのCode Templatesを利用します。

Preferences > Editor > File and Code Templates

元記事を表示

PHP の array_reduce 関数 分かりやいサンプル

“`php

array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] ) : mixed
“`

array_reduce() は、配列 array の各要素に callback 関数を繰り返し適用し、 配列を一つの値に減らします。

例:

“`php


‘;
return $carry;
}

$a = array(1, 2, 3, 4, 5);

var_dump(array_reduce($a, ‘sum’, 10));

“`

結果

int(10) int(1)
int(11) int(2)
int(13) int(3)
int(16) int(4)
int(20) int(5)
int(25)

元記事を表示

Laravelでトランザクションをネストせずに新しいトランザクションを切る

毎度同じことをやろうと思った時にどうやればいいか忘れてしまうので備忘も兼ねて

# はじめに
Laravelでは以下のコードのようにするとトランザクションをネストしてSAVEPOINTを作成するため、やんごとなき事情で新しいトランザクションを切りたいなーと思ってもうまくいきません。
(ID発番が連番ではない場合に別テーブルでID発番を管理しトランザクションを分けることでロックする時間を短くするとか)

“`php
DB::beginTransaction();
{
DB::beginTransaction();
Animal::create([‘name’ => ‘ぺんぎんさん’]);
DB::commit();
}
DB::rollBack(); // ぺんぎんさんの挿入もロールバックされる!
“`

SAVEPOINTってなんだ!って方は以下の記事が非常にわかりやすかったです。
●トランザクションのネストの使い方まとめた(初心者向け)
https://qiita.com/_natsu_no_yuki

元記事を表示

静的メソッドと動的メソッドの違い

自分なりのメモです。
#ずっと前から気になってた
selfと$thisの違いってなに
#ざっくりいうと
そのクラスのインスタンスが持つプロパティがメソッドの結果に
・影響を受けないのが静的メソッド
・影響を受けるのが動的メソッド
#もっとわかりやすい参考
[【PHP】静的と動的メソッドとは](http://fresh-engineer.hatenablog.com/entry/2018/08/23/031829)

元記事を表示

PHPの基礎知識整理

なんぞやについて

# PHPについて
HTMLに埋め込むことができる、Web開発でよく使用されるスクリプト言語

当初の名称は「Personal Home Page Tools」
個人の履歴書を公開する為の簡易ツール

### PHPとHTML・Javascriptの違い
PHP:**サーバサイド**で**動的**にWebページを生成
HTML:**静的**にWebページの表示
JS:**クライアントサイド**で**動的**にWebページを生成
→ どのようなコードが書かれているのか、誰でも見ることができる

PHPはサーバサイドであるため、サーバー側にあるMySQLなどのデータベースと連携することが可能

### できること
・HTMLソースコードを生成
→ HTMLの一部分のみPHPで生成することができる(後述)
・データベースと連携
・クライアントから送信された情報を受け取る
・ファイル操作
・API連携
・バッチ処理
・WordPress[^2]のカスタマイズ

### 作れるもの
・お問い合わせフォーム
・予約サイト
・検索機能
・ログイン機能
・ECサイト
・SNS
・グ

元記事を表示

始めてWebサイトを作成した時にお世話になった記事

# 初めに
プログラミングを始め、初めてWebサイトを作成した時に自分がお世話になった記事をここにあげます。
もし自分と同じようなところで悩んでいるところがあれば、参考にしていってください。

#参考にした記事一覧

**環境構築編**
[WindowsでPHP/Apache環境構築(ダウンロード~画面を起動するまで)](https://qiita.com/uriuri7610/items/df6a05ed27b65fde499c)
なぜか自分のパソコンにxamppがダウンロードできなかったので、この記事を参考にApacheサーバーを入れました。

**CSS編**
[サルワカ ChromeでCSSが反映されない?キャッシュ消去で対処](https://saruwakakun.com/it/web/google-chrome)
CSSの変更がブラウザになかなか反映されないという問題がこれで解決しました。

**JavaScript編**
[JavaScriptに”Maximum call stack …”で怒られた1例と解決までにやったこと](https://foolean.net/p

元記事を表示

Windows10にPHPをインストールする方法

– 環境
– Windows10 Pro 64bit

# ダウンロードする
## PHP本体
1. [PHP For Windows: Binaries and sources Releases](https://windows.php.net/download#php-7.3)からPHP7.3「VC15 x86 Thread Safe」のzipファイルをダウンロードする
– 今回ダウンロードしたのは、`php-7.3.14-Win32-VC15-x86.zip`
1. zipファイルを解凍して任意のフォルダに配置する
– 今回は、`C:\apps`配下

## XDebug
デバックするのでこちらもダウンロードする

1. [Xdebug: Downloads](https://xdebug.org/download)から「PHP 7.3 VC15 TS (32 bit)」のdllをダウンロードする
– 今回ダウンロードしたのは、`php_xdebug-2.9.1-7.3-vc15.dll`
1. ダウンロードしたdllを `C:\apps\php-

元記事を表示

Laravelで非同期チャットアプリを作ろう(2)

# はじめに
この記事では、片方がコメントを送信したら、もう片方の人はリロードしなくても、コメントが表示されるチャットアプリを作っていきたいと思います。

前回:[Laravelで非同期チャットアプリを作ろう(1)](https://qiita.com/Alesion30/items/8580a85a09822b067ff9)

# 完成物

![chat2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519787/fecc0df8-a5d8-68c0-0afd-a30d6a63a946.gif)

ソースコード:https://github.com/Alesion30/ChatApp

# 非同期通信とは

非同期通信とは、ネットワークなどでつながれているコンピュータ間で、送信者のデータ送信タイミングと受信者のデータ受信タイミングを合わせずに通信を行う通信方式のこと。

参照: [非同期通信 - @IT リッチクライアント用語事典](https://www.atmarkit.co.jp/aig/07

元記事を表示

PHP + mysql を久しぶりにやる前に見ておく

個人的メモ

# ダメぜったい

– xxx.php ファイルの末尾の `?>` の後に空行や空白を不用意に入れない。
– mysql のパスワード書いたファイルを git add しない。

## 他言語との違いなど

– 文末にセミコロンが必要
– 変数名の冒頭に `$` が必要
– 明示的な型変換を必要としない。
* 強制的に型を決めたいときは `$x = (int)$a` など。
– 文字列のクオートは ” または “”。
* 文字列の連結は `.`; たとえば `$a .= ‘hoge’ . ‘huga’;`
– 配列はすべて連想配列扱い。
* `$a[1]` は `$a[“1”]` と同じ。
– コメントアウトは `//`
– グローバル変数はローカルスコープ内では無効
* スコープ内で参照するには `global $val;` が必要
– 外部ファイルの読み込みは `require(‘filename.php’);`
* `include` は読み込めない場合でもエラーにならない
– `else if`, `elseif` 両方あり。
– 標準出力への出力は

元記事を表示

CakePHPとAjaxでいいねボタンをつくりました

1週間前のAjax何もわかってない自分に向けて書きます。
CakePHP3.8を使っています。

# つくりたいもの
Twitterのいいねボタンみたいなやつ。
掲示板の投稿メッセージ一覧に、メッセージに付随して表示する。
自分がボタンをすでに押している場合は、ボタンに色がついている。押していない場合、色がついていない。
他ユーザー含めて、いいねボタンが押された数を表示する。

# まず
jQueryを勉強するところから始めました。

# テーブルの構成
関係あるところらへんだけ

– Users
– id (int)
– username(関係ない)
– password(関係ない)
– Posts
– id (int)
– message(関係ない)
– Favorites
– id (int)
– user_id (int)
– post_id (int)

# とりあえずメッセージ一覧画面に、いいねボタンといいね数を表示する
関係ありそうなところだけ抜粋して載せています。
色々と省略しています。

“`php:P

元記事を表示

【初学者向け】セキュリティ対策入門[番外編]①〜OSコマンドインジェクション編〜

# 前提

## 確認環境

以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜](https://qiita.com/junkimatsuda/items/b29e496132b7fe596397)

## 本シリーズの目的

以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜](https://qiita.com/junkimatsuda/items/b29e496132b7fe596397)

## 本記事の目標

**OSコマンドインジェクションの概要、原因、対策について理解すること**です。

## 本記事を読み進める上での必要事項

以下の内容を終えていることです。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜](https://qiita.com/junkimatsuda/items/b29e496132b7fe596397)

## どうでもいいお話

あまり主要ではない脆弱性についてはこちらの番外編で扱っていきます。主要ではないというのは被害ケースをあまり耳にしないという意味で、脆弱性をつかれたときの被害が少ないというわ

元記事を表示

videoタグがipadでうまく再生できない考察

## はじめに
動画ファイルがたくさん溜まってきたのでwebで検索し再生するソフトを作成した。html5からvideoタグが使えるようになり、新しいwebの作り方を勉強しつつ作成したものです。しかし、パソコン・Androidスマホでwebを操作し再生することはできたのだが、ipadで再生することができなかった。はじめてのvideoでもあり、使い方に間違いがあるのかもしれませんが、結局原因がわかりませんでした。

今回、調査した内容をまとめるとともに、当面の運用として対処法を示す。

## 使用したプログラム
原因調査をするため、プログラムをシンプルにした。プログラムはhtmlファイルとビデオを提供するphpファイルです。
対象動画ファイル(003.mp4):サイズは1280×720、長さは2:04:33、ファイルサイズは1.33GiB
大きいファイルサイズの動画が対象のため、一度に全てを送信するにはサーバの負担が大きすぎるため、最大1MBに制限しクライアントから逐次複数回要求により全体を提供する方法とした。

“` html:index.html

元記事を表示

LaravelでUncaught domexception: failed to execute ‘***’ on ‘element’: ‘,’ is not a valid attribute name.を吐き出したときに確認したこと

#Laravelにてアプリを作成していたところコンソールに下記のようなエラーが発生

“`
Uncaught domexception: failed to execute ‘setattribute’ on ‘element’: ‘,’ is not a valid attribute name.
“`

簡単に訳すと「属性名に’,'(カンマ)は使えないから’setattribute’は実行できないよ!」
と怒られてしまってます。

#考えたこと
コンソールのエラーだからJavaScriptのファイルに不備があるのか?
![スクリーンショット 2020-01-23 午後5.36.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483590/d5ad67f2-7801-feb0-f557-6346c6d72aac.png)

右側の**app.js:41954**から該当エラー個所をみてみるが何もおかしいところはなさそう。
そもそも”,”(カンマ)がその行にない…

## 「属性名」に異常?

元記事を表示

【初心者向け】関数について

||意味      |
|:–|–:|
|関数|一つの処理をまとめたもの|
|引数|関数に渡せる値|
|返り値|関数から戻ってくる値|
|初期値|引数がない時の値|

#関数とは

処理をひとまとめにすることで使いまわせる
似たような処理をまとめられる

“`php:
//定義
function sayHello() {

//処理
echo “Hello!”;
}

//呼び出し
sayHello();// Hello!
sayHello();// Hello! 何度も呼び出し可能
“`

#引数とは
関数に渡す値

“`php:
//渡された引数が$nameに入る
function sayHello($name) {

//$nameは関数の中で使用できる
echo “Hello!” . $name;
}

//関数に引数を渡す
sayHello(“Tom”);// Hello!Tom
sayHello(“Bob”);// Hello!Bob

//引数は複数指定できる
function sayHello($name,$ago) {

echo “Hello

元記事を表示

AmazonLinuxでPHP7.1から7.2にアップデート

# 概要

AmazonLinuxでPHP7.1から7.2にあげたときのメモです。
試行錯誤しながらやったので、これ通りに動かないことがあると思います。

– yumからインストール

“`bash
$ sudo yum -y install php72 php72-mbstring php72-pdo php72-php-fpm.x86_64
“`

__実行結果__

“`
: (中略)
Error
Requires: scl-utils
“`

– scl-utilsが必要らしいので、インストール
– yumでは用意されていないので、rpmから

“`bash
$ sudo rpm -Uvh ftp://ftp.scientificlinux.org/linux/scientific/6.9/x86_64/updates/fastbugs/scl-utils-20120927-29.el6_9.x86_64.rpm
“`

– 再度php72をインストール

“`bash
$ sudo yum -y install php72 php72-mbstring php7

元記事を表示

Laravelでブログの本文の続きを「…」にする方法

### {!! nl2br(e(str_limit(変数, 制限文字数))) !!}
で制限文字数から先の文章は「…」になります。
### 解説
#### nl2br
PHPの改行コードになります。(htmlで言う`
`)
https://www.php.net/manual/ja/function.nl2br.php
#### e()
()内をエスケープさせます。
> e関数は、PHPのhtmlspecialchars関数をdouble_encodeオプションにデフォルトでtrueを指定し、実行します。

https://readouble.com/laravel/5.7/ja/helpers.html (「e()」で文字検索してください。)

> htmlspecialchars — 特殊文字を HTML エンティティに変換する

https://www.php.net/manual/ja/function.htmlspecialchars.php

エスケープ処理に関してはこちらを参照
https://qiita.com/n_hirai/items/df0a21d24

元記事を表示

Googleスプレッドシートの内容を読み込む

# はじめに
こちらの記事は、

– PHP
– [Google Sheets API](https://developers.google.com/sheets/api/reference/rest?hl=ja)

を使用してGoogleスプレッドシートの内容を読み込むサンプルです。

参考にした記事は、[PHPでSheetsAPIを使用してGoogleスプレッドシートにデータを追記していくサンプル。](https://qiita.com/niiyz/items/30fab61adc4fcf87b98a)です。

↑こちらの記事は、スプレッドシートの書き込みですが、この記事では読み込み方法を説明します。

ですので、上記の記事の

– プロジェクトを作る。
– スプレッドシート作成・共有設定
– PHPからスプレッドシート追記 > 0. githubからcloneしてライブラリ導入
– PHPからスプレッドシート追記 > 1. プロジェクト直下にダウンロードしたJsonファイルを設置

まで同じです!

# Googleスプレッドシートの値を読み込む

## サンプルソース
動作確

元記事を表示

OTHERカテゴリの最新記事