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

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

【レポート】PHPカンファレンス2019キーノート

qnote アドベントカレンダー第1日目は、ちょうど PHP カンファレンス2019の開催日という事もあり、現地からの採れたてレポートをお送りしたいと思います。

#PHPカンファレンス2019
今年はいつもよりも遅めの12月開催。ちょうど11月29日にPHP7.4がリリースされ、またPHP7.1が EOL を迎えた日でもあります。
毎年おなじみの大田区産業プラザにて19年目20回目の開催。

![8B5C7269-F8AE-479E-AAAC-C26EFC14C8B9.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6102/df950e41-6e14-9475-2354-c8af50e78bcf.jpeg)

今年は嬉しいことに後輩 (@kambe0331) がスタッフとして参加。きっと刺激をうけて来年は登壇してくれる事を期待しています。

#基調講演
乗り換え間違えてギリギリ到着。まずは御目当てのキーノートを拝聴。
1回目から参加している私としては廣川さんのキーノートを毎回楽しみにしています。

元記事を表示

PHPで分割代入していくだけの投稿

この記事は PHP Advent Calendar 2019 の1日目の記事です。

# 分割代入とは

配列の中身を複数の変数に一回で代入できる書き方

# `list()` と `[]`

`list()`を使うか、PHP7.1以降では`[]`を使ってもOK

この投稿では基本的に`[]`の書き方で試していきます。

“`php
$colors = [‘red’, ‘yellow’, ‘blue’];

[$x, $y, $z] = $colors;
var_dump($x, $y, $z); // “red”, “yellow”, “blue”

list($a, $b, $c) = $colors;
var_dump($a, $b, $c); // “red”, “yellow”, “blue”
“`

### swapした例

“`php
$a = ‘apple’;
$b = ‘banana’;

[$a, $b] = [$b, $a];
var_dump($a, $b); // “banana” “apple”

list($a, $b) = [$b, $a];
v

元記事を表示

【PHP】PCRE関数で使える、置換に便利な参照記号$nを使いこなす(+JS・Perl・Ruby・Pythonでの動作検証)

元々は、PHP初級者向けに作った軽いネタです。正規表現におけるパターンマッチングのことは触れていても、案外置換における便利な記号リテラル(参照記号)のことに触れていない記事が多かった(というより、パターンマッチングの後方一致記号と被るので、そっちの記事が優先的に現れ検索されにくい…)のでおさらいしてみました。

…また、**各言語によって記述の仕方に癖がある**ことがわかったので、要点整理しています。

#PHP
PHPには正規表現を用いた関数(PCRE関数というらしい)としてpreg_xxxxxというのがあります。代表的な関数としては

“`PHP
preg_match(パターン,対象文字列) //検索に用います
preg_replace(パターン,置換文字,対象文字列) //置換に用います
“`

などがあります。では今回はこのpreg_replace関数についてです。そして、この関数は、エディタと同じように参照記号`$n`を使用することができます。なお、今回は正規表現の記法はある程度熟知しているものとして話を進めていきます。

## 実例
たとえば、住所録を整理していて、住所

元記事を表示

【Laravel】画面で指定したソート条件をページング先でも反映させる

画面上でボタンなどでソート条件を指定→ページング先でも反映させるための一連の手順です。

## やりたいこと

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/c2182529-ceec-0ce6-4512-016f3a8a63f7.png)

## 環境

– PHP:バージョン7.3.7
– Laravel:バージョン5.8
– OS:Windows10

## 手順
### 1. ページング機能の作成
まずはページング機能を作成します。
ControllerとViewを編集するだけなので、わりと簡単。

#### (1)Controllerの編集
全件を取得し、1ページ当たり5データ表示させる場合は以下の通り。
pagenate()のカッコ内の数字を任意の数字に変えましょう。

“`php:TestController.php

public function initialize(){

$test_forms = TestForm::al

元記事を表示

PHP <条件分岐でのincludeとURLからのタイトル取得>

#はじめに
最近はPHPについて学習しています。
ここ一ヶ月の勉強で学んだことを使用しながら、簡単なプログラムを作ってみました。
セキュリティ関係はほとんど考慮していません。ある程度のセキュリティについては[こちらの記事](https://qiita.com/vber_program/items/5f47dd59dcbd671aa17b)で説明しています。

#作成した機能の説明

初期画面は以下の通り。
GETを使用したページ遷移を行いたい。また入力したURLからそのサイトの情報を一部取得したい(ここではtitleタグ取得する)。
スクリーンショット 2019-11-30 20.45.07.png
TopPage、MyPage、送信を押した場合の画面は以下の通り。
URLから取得したタイトルとそのURLをリンクと

元記事を表示

【Laravel】自作artisanコマンド実行中のログを保存する方法

#はじめに
Laravelで自作artisanコマンド実行中の様子を`storage\logs`内にログファイルとして保存したい場合の方法を書いてみます。

#artisanコマンドを生成

“`.bash
$ php artisan make:command HelloCommand
“`

`app\HelloCommand.php`を以下のように編集

“`php

元記事を表示

【Docker】はじめてのDocker〜概要・PHPコマンドの実行まで

名前しか知らなかったDockerを使ってみました。
備忘録です。

# Dockerとは
コンテナ型の仮想環境を提供するツール
[docker初心者の方が知っておいた方がよい基礎知識](https://www.osscons.jp/cloud/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/?action=common_download_main&upload_id=698)

# なぜ使うのか
– 従来の仮想環境(ハイパーバイザ型)と比較して軽く、リソース消費が少ないから
– 作成した環境を簡単に配布できるから

# 用語集
解説は[Docker-docs-ja/用語集](http://docs.docker.jp/glossary.html)を参考にしています。

ハイパーバイザ型・コンテナ型の概要も含め、図で見た方が分かりやすいです。
[Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き)](https://paiza.hatenablog.com/entry/docker_intro)

## Docker

元記事を表示

Laravelの認証機能ui(外部パッケージライブラリ)導入

##ターミナルでインストール

composerを使ってuiライブラリをインストールする

“`terminal
$ composer require laravel/ui
“`

Package manifest generated successfully. と表示されたらOK

##artisanコマンドでvueを追加

“`terminal
$ php artisan ui vue –auth
“`

スタイルシートが壊れた場合は、npmから不足するパッケージをインストールすることで修復する

“`terminal
$ npm install
“`

“`terminal
$ npm run dev
“`

元記事を表示

Twitterでのエゴサーチを便利にしたかった

TwitterREST APIを用いた検索ツールです
https://shioharu.minibird.jp/twitter/
https://github.com/shioharugit/twitter

## エゴサーチ
みなさんはエゴサーチしますか?
自分は音楽作ったときとかめっちゃします。
![image01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290284/8ef844f6-f4d7-457f-7f51-d5eb76f65cfc.jpeg)

## 問題点
ところが作品を作るたび、検索したい項目が増えるので大変です。
エゴサーチが気軽にできるようなツールがあればなーと思い、
TwitterREST APIを使用して実現しようとしました。

## 導入方法

– 『[Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報](https://qiita.com/kngsym2018/items/2524d21455aac111c

元記事を表示

AWS CognitoでFacebookログインを実装してみた

こんにちは、キッド✈️と申します。
東南アジア発のスタートアップスタジオ、[GAOGAO](https://gaogao.asia/)のサーバーサイドエンジニアです。

弊社は、株式会社Ancar様のサービス「[Ancar](https://www.ancar.jp/)」の開発をサポートしており、僕も現在関わらせていただいています。

Ancarでは、既存の認証機能を[Cognito](https://aws.amazon.com/jp/cognito/)へ移行することを目指しており、そこで得た知見が、少しばかりではありますが、あるので備忘録としてすことにしました。少しでも皆さんのお役に立てたら嬉しく思います。

# 目次
– Cognito移行の背景
– AWS CognitoでFacebookログインを実装する
– 同じemailのユーザーが二人出来てしまう問題を解決する
– まとめ

# Cognito移行の背景
[Ancar](https://www.ancar.jp/)は、中古車の個人間売買サービスです。中古車売買において“安心安全な個人間売買”の実現を目指し、日々サービス開

元記事を表示

docker 19 + nginx 1.17.6 + PHP 7.4の環境構築

# docker 19 + nginx 1.17.6 + PHP 7.4の環境構築

## 環境情報

`2019/11/30 時点`

– MacOS X 10.15.1(19B88)
– Docker 19.03.5
– nginx 1.17.6

## 事前準備

Mac用の`docker-for-mac`をインストールする必要があります。
インストールする際、Docker Hubのアカウントが必要になりますので、事前にDocker Hubへのアカウント登録を済ませておいてください。

https://docs.docker.com/docker-for-mac/install/

“`sh
$ docker –version
Docker version 19.03.5, build 633a0ea
“`

## 環境構築

基本的にはdocker-composeを使って環境構築を進めていきます。

### nginxの構築

以下のディレクトリ構成を前提に環境構築を進めていきます。

“`shell-session
.
├── docker-compose.yml

元記事を表示

Laravel ルーティング設定

Laravelのルーティング設定

##web.phpの設定
ディレクトリ内の routes → web.php

まず、useの処理を追記

“`php

元記事を表示

Raspberry PiのデータをGCPに送ってみた(無料)

# Raspberry PiのデータをGCPに送ってみた(無料)
Raspberry PiのデータをMySQLに格納し、Web上で確認できる仕組みを作りたかった。
VPSにサーバーを立てて、データのやり取りをしたい人向け。

※本記事は、Rasberry Pi上で気温データを取得し、送信することを目的としています。

### 開発環境
– Windows10 Pro
– Powershell
– Windows Subsystem for Linux(Ubuntu)

## GCPについて
Google Cloud Platformの略称で、Googleが提供しているクラウドコンピューティングサービスである。
>https://cloud.google.com/?hl=ja

GCPの始め方はこちらを参考に
>https://cloud.google.com/gcp/getting-started/?hl=ja

## Webサーバを立てる
– GCPプロジェクトの作成
– 好きなOSのVMを立てる(筆者は、Ubuntu 18.04 LTS)

※無償枠で作成する場合はこちらを参考に作

元記事を表示

【Laravel】独自のDB用クエリ関数を実装する

# この記事でやりたいこと
こんな独自のクエリ関数を実装する手順です。

“` php
\DB::canConnection(); //(1)
\Schema::getColumnDefinitions(‘user’); //(2)
User::getColumnDefinitions(); //(3)
\DB::table(‘user’)->getColumnDefinitions(); //(4)
“`

# はじめに
以下のような関数は、Laravelですでに用意されています。

“` php
\DB::statement(‘drop table users’);
\Schema::hasTable(‘testTable’);
“`

上記のような形式の、独自の関数を追加する方法です。

# 実装方法
それでは早速実装してみましょう。
なお、「この記事で書きたいこと」で書いた(1)~(4)の関数ですが、厄介なことに定義する場所は、それぞれ異なります。その点を考慮しておいてください。

今回作成するコードのフォルダ構成は、以下のようになります。

> ServicePr

元記事を表示

cakephpのテンプレートにjavascript呼び出しのみのボタンを設置

“`php:test.ctp

Html->link(‘clickme’, ‘javascript:hoge();void(0)’, [‘class’ => ‘fuga’]); ?>

// class無しの場合
Html->link(‘clickme’, ‘javascript:hoge();void(0)’); ?>

“`

元記事を表示

Laravel-Excelで複数行のヘッダーを無視したい

# Laravel-Excelで複数行のヘッダーを無視したい時

[Laravel Excel](https://laravel-excel.com/)

ドキュメントをみたけれど、書いてなかったので、Issueに書いてあったことを記録しておきます。

例えば、ヘッダー行(1行目)を飛ばすのはオプションでありそうですが、複数行目(例:6行目からデータ行が始まっているので、)飛ばしたい場合、いかのように書いてやればいいです。

`WithStartRow`を使用します。

“`php
use Maatwebsite\Excel\Concerns\WithStartRow;

class UsersImport implements ToModel, WithStartRow
{
/**
* @return int
*/
public function startRow(): int
{
return 6;
}
}
“`

元記事を表示

VSCodeでPHP+Vagrantのデバッグ環境を構築する

# 背景・動機

– デバッグ作業をする際にvar_dumpなどを使って出力していた。
– 場合によっては20個くらいvar_dumpするので、かなり非効率。
– マスターのソースコードに消し忘れたvar_dumpが混入している。

XDebug使えば?と言われて使ってみたらかなり便利で世界が変わったので、共有したいと思い投稿しました。

# 前提

– Vagrantで起動されたPHP環境がある。
– XDebugはインストール済み。
– VSCodeにPHP Debugプラグインがインストール済み。

# 手順

1. Vagrantのphp.iniファイルでXDebugを有効化
2. VSCodeのlaunch.jsonにデバッガの設定を追加
3. Chrome拡張をインストール
4. ブレークポイントをはる
5. デバッグモードにする
6. アプリケーションを起動

## 1. Vagrantのphp.iniファイルでXDebugを有効化

php.iniファイルに以下の設定を追記します。
追記後は`service httpd restart`しましょう。

“`
xdebu

元記事を表示

【Symfony】フィクスチャロード(php app/console doctrine:fixture:load)でエラーが出た時の対処法

#はじめに
作業していて発生したエラーの対処法についてまとめた備忘録となります。

#開発環境
PHP:7.0
Symfony:2.8
CentOS6系(VirtualBoxで環境を構築)

#発生したエラー内容
“`terminal
$ php app/console doctrine:fixture:load
[Swift_TransportException]
Connection could not be established with host email-smtp.us-east-1.amazonaws.com [php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution #0]

元記事を表示

PHPで簡易的なフレームワークを作ってみた

#簡易的なPHPフレームワークを作ってみた

簡易的なフレームワークを実際手を動かして作ることで多少なりとも、
現在使っているフレームワーク(Laravel・自社フレームワーク)の理解の助けになればよいと思い作ってみました。

##リクエストの処理をindex.phpに集中させる
.htaccessですべてのリクエストに対してindex.phpが実行されるようにします。
https://sample.jp.localhost/blog/hogehoge
たとえば、上記のようなアクセスがあったら、以下のようなURLにリダイレクトされます。
https://sample.jp.localhost/index.php?url=blog/hogehoge

“`text:.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ ind

元記事を表示

【PHP】PHPのデバッグで滅茶苦茶よく使う関数、”var_dump()”を紹介する記事

皆さんは、PHP開発をするうえで「あの関数、中身どうなってるんだ?」と疑問を呈した事は無いでしょうか?
いちいち中身を確認する為に、実行して結果が思ったものと違って、かといって原因はわからない…
そんな経験もあるものかと思います。

そんな状態を解決してくれるのが、この[var_dump]です。これは、いわゆるデバッグに使う関数で、使うとその便利さに驚くはずです。
ここでは便利な**var_dump関数について、使い方&仕様を解説します!**

#var_dump()の動きを解説

まず下記のテストコードを打ち込みます。

“`php:var_dump_testCord.php
3,”banana” => “sweet”,”orange” => 7];

var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);

“`

すると出力は以下の通りになります。

元記事を表示

OTHERカテゴリの最新記事