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

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

[PHP] 親の親のコンストラクタを呼び出す方法

PHPのコンストラクタ、“`__construct()“`。親クラスのコンストラクタを呼び出すときは“`parent::__construct()“`で呼び出せます。では、親の親というか、祖父母というか、2等身以上離れたクラスのコンストラクタを呼び出すにはどうするのでしょう?親クラスのコンストラクタを実行せず、2等身先のコンストラクタを呼び出したい場合です。

# 対象のクラス名::__construct()

↑のとおりです。感覚的にstaticな呼び出しと同じ書き方なので、プロパティの設定が意図通り動作するのか不安になりますが、大丈夫なようです。

確認したバージョンは7.1.5とか7.3系。5.6系でもいけそう…?

コード例はこちら。“`C1 -> C21 -> C321“`という流れで継承しています。

“`PHP

元記事を表示

Re: 10秒で衝突するUUIDの作り方

元ネタは下記リンクを参照。
「UUID生成はライブラリを使え 自分で書くな」との結論は全く同意。

10秒で衝突するUUIDの作り方 – Speaker Deck

# セキュアコーディング

 元ネタ前半の実装のように、アプリケーション開発者が乱数シードを指定して乱数を生成するような実装だと、第三者がシードの値を推測して「次に生成されるUUIDを予測する」ことができるかもしれない。(下記リンクはJavaにおける類例の解説である。)

MSC02-J. 高品質の乱数を生成する
https://www.jpcert.or.jp/java-rules/msc02-j.html

また、生成される可能性のあるUUIDの種類が少ない場合、第三者が総当たりで「どれでもいいので既存のUUIDのどれかに衝突させる」ことができるかもしれない。

 例えばセッションIDを第三者が上述のような方法で推測または意図的に衝突させる

元記事を表示

Local (Beta) v5.0.x で PhpStom (Visual Studio Code) で Xdebugを有効にする方法(PHP Snifferも)

# 概要

ものすごくハマったのでメモします(macOS High Sierra環境)

普段はプログラミングをしないのに、開発環境作りに時間がかかるなんて・・・。そんな思いをしないためのメモです。

結論は、

– xdebug の設定で、xdebug.remote_connect_back=Off とする

以下、WordPressの開発環境構築も含め、ざっと説明します。

# Local by Flywheel

2019.11.26現在、macOS high Sierra でWebサイトにアクセスすると、「ver5.0.x」がダウンロードされる。インストールしたら、思いっきり「Beta」と書いてある。

利点は「2倍以上の高速化」。起動も、再起動も、動作も早い。

(Virtualboxではなく、macのDockerを使っているのかしら。詳しく知るほどの知識はありません)

欠点は、便利なAddonと、カスタマイズが一切なくなったこと。そのうち、実装されるらしい。Betaだからないとのこと。

## 重要: WordPressの準備と、PHPの設定変更

– Query Mo

元記事を表示

Address already in use でPHPのビルトインサーバーが立ち上がらない時の対処方法

phpのビルトインサーバーを立ち上げようとした際に、

“`terminal
php -S 192.168.33.10:8000
“`

のコマンドを実行すると、

“`terminal
Failed to listen on 192.168.33.10:8000 (reason: Address already in use)
“`

等とエラーが出てしまう時の対処方法のメモ。

##解決手順

1.使用しているPID番号(プロセスID)を確認

“`terminal
ps ax | grep php
“`

ターミナルで上記のように入力すると、現在しているポートが表示される。

“`terminal
[vagrant@localhost My_php]$ ps ax | grep php
9375 pts/0 S+ 0:00 php -S 192.168.33.10:8000 -t public_html/
“`

※一番左の数字が「PID番号」なので、上記の例だと「9375」

2.既に解放しているプロセスを終了する

“`terminal
k

元記事を表示

shell やlinuxでファイル名の特殊文字をエスケープしたい!

タイトルそのままlinuxコマンドで

##問題

“`bash
wc -l /var/tmp/20191126-(2,135,397個)テストファイル.csv
“`
のように「20191126-(2,135,397個)ファイル.csv」ファイルの行数を取得しようとしたらエラー

“`bash

-bash: syntax error near unexpected token `(‘
“`
シンタックスエラーだと。。。

##解決策

どうやら「(」が特殊文字でエスケープする必要があるとのこと

ファイル名をシングルクォートで囲めばOK!

“`bash

wc -l ‘/var/tmp/20191126-(2,135,397個)テストファイル.csv’
“`

PHPであれば、、

“`php
$filePath = ‘/var/tmp/20191126-(2,135,397個)テストファイル.csv’

$totalRows = exec(“wc -l ‘${filePath}'”);
“`

これで正常にできるはず

かんたん

元記事を表示

【Laravel】VirtualBox+Vagrantで環境構築

こんにちは!!
PHPの始めることになりました!
使用するフレームワークがLaravelです
VirtualBox+Vagrantを使って環境構築したので
今回はVirtualBox+Vagrantを使ってLaravelの環境構築のやり方についてまとめました!!
#やること
ゼロからlaravel-projectという名前のアプリケーションを作ることにします!
内容は、、
まず、VirtualBox+Vagrantを使ってLaravelの環境構築をします。
その後、laravel-projectという名前のアプリケーションを作ります!
**それでは始めましょう!!**
#前提
前提条件が以下になります
ホストOS
  macOS(Mojave)
使用するツール
  virtual box
    仮想環境を作成するツール
  vagrant
    仮想環境を操作するツール

#仮想環境を構築しましょう
それでは仮想環境を構築していきましょう
##VirtualBox、Vagrantのインストール
下記の公式サイトからVirtualBox、Vagrantダウンロードしてください
ダウン

元記事を表示

PHPWeekly 191114 簡単サマリー

PHPWeeklyの内容を簡単に翻訳し、興味のある内容に対してコメントを残します。

知っている知識の中で、ブログを書こうと思っていますが、間違ってる内容が含まれている可能性もあります。

間違っているところに対する指摘はいつも歓迎ですが、`非難・悪口`は求めていません。

## 始まる前に

1. PHP 7.4が発表され、SymfonyとLaravelにも7.4が適用されました。

2. ブログを作成しながら知らなかったことを調べたり、補足したりするのにかなり時間がかかりました。
やっぱり勉強し続けないとプログラマーとして衰えることも改めて思いました。

## 記事

### [PHP 7.4 ガイド](https://anastasionico.uk/blog/php-7-4-new-featureshttps://anastasionico.uk/blog/php-7-4-new-features)

新しく追加された機能を簡単に記録します。

#### 1. タイプ指定が可能になりました。

“`php
class User {
private int $id;

元記事を表示

Ajax通信で403エラーになる

Ajax通信が403エラーで返ってきていた原因の調査にとても時間を取られたので、備忘録として残します。

## 環境
– php: 7.1.30
– Laravel: 5.4.36
– Webサーバー: Apache 2.4

## 返ってきていたエラー
Ajaxでデータを更新するフォームで、送信したのにうまく更新されていない
->Laravelのログを見てみる
->ログには何も出ていない
->Chromeのコンソールで確認した結果、以下のエラーが返ってきていました。

“`
PUT https://xxx/yyy/zzz 403 (Forbidden)
“`

Ajax通信が403エラーでうまく動作していません。なぜかアクセス禁止の扱いを受けてしまっています。

## 調査
– Apacheのエラーログの確認

Laravelのログに何も出ていない->そこまで処理が来ていないということなので、Apacheのエラーログを確認することにしました。(ここまでに結構な時間がかかってしまいました)

Apacheのエラーログを確認すると、以下のエラーが出ていました。

“`
[Thu N

元記事を表示

pre-commit時にphp-cs-fixierを走らせる

作業者それぞれ書き方にブレがあるとウガーってなりますよね。
コミット時にphp-cs-fixierを走らせて強制的にfixするようにします。

## pre-commitのファイルを作成します

リポジトリの.gitディレクトリの中にあるpre-commit.sampleファイルをリネームコピーします。

“`bash
cp .git/hooks/pre-commit.sample .git/hooks/pre-commit
“`

## pre-commitファイル

pre-commitファイルに下記を記述します。

“`sh
#!/bin/sh

# php-cs-fixerを適用してからコミットします

if git rev-parse –verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=$(git hash-object -t tree /dev/null)
fi

# If you

元記事を表示

phpに関する備忘録

#php操作
phpに関する備忘録です
##フォルダー作成
アプリケーション > XAMPP > htdocs
とたどり、任意のフォルダー作成。
ここで作ったフォルダーでphpファイルを管理する。

ここでファイルを作成する理由は、
自分のパソコン内ににサーバーを構築していて、
サーバーと自分のパソコンを区別するため。

#作成したフォルダーをブラウザに表示
フォルダーをテキストエディターで開き、phpファイルを作成。
その中にコードを書いていく。

ブラウザに表示する際は、
XAMPPのmanager-osxアプリで Apach web server を起動し、
その後ブラウザで「localhost/任意にファイル名」と入力すると表示される。
##phpを書く準備

“`php

“`
phpファイル内にphpのコードしか書かないのであれば、
後半部分の?>は省略する決まりとなっている。
予期せぬエラーが起きる可能性があるため、確実に省略する!!

#基本構文
###ブラウザに表示させる
ブラウザに「Hello wor

元記事を表示

phpQueryを使ってWEBスクレイピングを試してみた

#PHPでwebスクレイピングを試してみた。
phpQueryというライブラリを使うとjQueryのように要素を指定して簡単にスクレイピングできるみたいなので、サンプルを試してみました。
jQueryのようにセレクタを指定する事ができるので、すごく直観的にスクレイピングしたい要素が取得できます。
**※スクレイピングについては自己責任で行ってください。**

##WEBスクレイピングとは
ウェブスクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。
[出典:Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0)

##phpQueryのダウンロード

[phpQueryのダウンロードページ](https://code.google.com/archive/p/phpquery/downloa

元記事を表示

Twig + bulma でページネーションをやってみる

# 目的
PHPのテンプレートフレームワークである[Twig](https://twig.symfony.com/)とCSSのフレームワークである[Bulma](https://bulma.io/)でページネーションをやってみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/6717907d-e77c-f24d-5da3-a3697c6e622b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/fac445ea-3cc0-b8ae-62d2-1ae2bf53ec26.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/aa4ff01d-0c32-3661-8868-aa5c661539d9.png)

![image.png](https:

元記事を表示

APOD APIを用いて天文画像をダウンロードする

Q. 天文学・宇宙科学関連の画像がほしい
A. NASAがAPODってサイト持ってますよ → http://apod.nasa.gov/

お・わ・り (ゝω・)v

? … ? … ? …

これだけだと寂しいので、画像取得の自動化を目指します。

# 要旨

この投稿では、NASA APIsおよび、その簡単な利用について書きます。

# APODとは

天文画像が毎日掲載されるサイトです。

アーカイブに残っているもっとも古い記事は1995/06/15のもの。老舗です。

https://apod.nasa.gov/apod/lib/about_apod.html

> **Astronomy Picture of the Day** (APOD) is originated, written, coordinated, and edited since 1995 by Robert Nemiroff and Jerry Bonnell. The APOD archive contains the largest collection of annotated ast

元記事を表示

#wordpressを知らないPHPエンジニアあるある

ツイッターで [#wordpressを知らないPHPエンジニアあるある](https://twitter.com/hashtag/wordpress%E3%82%92%E7%9F%A5%E3%82%89%E3%81%AA%E3%81%84PHP%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%82%E3%82%8B%E3%81%82%E3%82%8B?src=hashtag_click) を書いているのですが、ツイッターだと流れてしまうので纏めています。

【Laravel開発ノート】ドメインを設定するポイント

##1.目的
ローカル環境で「http://192.168.10.10/」→「http://weibo.test」と表示したい。

##2.設定のポイント
###2.1 「.env」ファイル

“`
APP_DEBUG=true
APP_URL=http://weibo.test
“`

###2.2 「homestead.yaml」ファイル

“`yaml
sites:
– map: weibo.test # <--- ここ! to: /home/vagrant/code/Laravel/public ``` ###2.3 「/etc/hosts」ファイル ``` $ vim /etc/hosts ``` 最後の一行に以下の内容を追加 ``` 192.168.10.10 weibo.test ```

元記事を表示

AndroidでPHPにjsonを送受信する

#Androidでjsonを送受信する
この記事は調べながら作ったサンプルを自分用にまとめたものです。

AndroidでPHPにjsonを送受信するアプリを作ります。
例として、Androidで入力した文字列二つをPHPに送り、PHPで受け取った文字列を連結した後Androidに送り返します。
完成したアプリは以下のようになります。

Screenshot_1574675979.png

#Androidのコード

layoutのidは

+ 二つのEditTextはeditText1とeditText2
+ ボタンはsubmit
+ 結果の表示TextはtextResult

としたときのMainActivityは以下のようになります。

“`MainActivity.kt
class MainActivit

元記事を表示

【Laravel】メール送信失敗時のログを残す

Laravel で複数のメールアドレスへの送信処理を書いた時、メール送信が失敗したアドレスの一覧を取得したかったが、ドキュメントには載っていなかったのでメモとして残しておく。

## 環境
Laravel 6.X

## やり方
`Mail::failures()` で送信失敗メールアドレスが配列で取得できる。([参考](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Mail/Mailer.php#L541))
例えば、Mailable クラスの設定後、送信処理をコントローラに書く場合、下記のような感じ。

“`MailSendController.php
namespace App\Http\Controllers;

use App\Mail\SampleMailableClass;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use Log;

class MailSendController extends C

元記事を表示

PHP の Error/Exception の分類方法やまとめ方を考えてみたときのメモ。

## LogicException と RuntimeException の各子クラスの関連

Logic | Runtime | 意味
:– | :– | :–
Domain | Range | 変数が、事前に定義された範囲から逸脱してる。
Out Of Range | Out Of Bounds | 無効なインデックス、キー。
Invalid Argument | Unexpected Value | 関数側か、関数の呼び出し側か。
Length | Overflow / Underflow | すでに長さが変だった / 操作したら長さが変になる。

## Domain と Range

単純に、Logic Exception か Runtime Exception か。

Domain は「事前に定義された、過不足なくすべて列挙されたドメインデータの一覧」に含まれない、という例外。

Range は「全て列挙するのは難しいのだけれど、事前に定義された、境界が明確なデータの範囲」から逸脱する、という例外。

正直、この2つについてはもっと根本的な解釈を間違えている可能性がある

元記事を表示

preg_matchが2を返す

# https://bugs.php.net/bug.php?id=78853

[preg_match](https://www.php.net/manual/ja/function.preg-match.php)は、パターンにマッチした場合は1を、マッチしなければ0を、エラーが発生したらfalseを返します。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/9894f7a5-617f-5e43-0d63-3b07558193c0.png)

ということでこんな正規表現を試してみましょう。

“`php
var_dump(preg_match(‘/^|\d{1,2}$/’, “7”));
“`

[結果](https://3v4l.org/m49BV)

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/2d4b0286-aa7e-b8f0-4402-3ae777028a9

元記事を表示

OTHERカテゴリの最新記事