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

PHP関連のことを調べてみた2020年03月23日
目次

正規表現で制御文字以外とマッチさせる方法(in PHP)

※半角スペースは制御文字に含めない

“`php
preg_match(‘/\A[^\x00-\x1f\x7f]+\z/’, $text)
“`

参考: https://kanonji.hatenadiary.com/entry/20100226/1267173195

元記事を表示

lockファイルがコンフリクトしたときの対処法

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪ ---- ------------------- ↓ 余談はここから ↓------------------- lockファイルでインストールを制御ってのは、 割と理想論だと思っている。 まぁ、それはいいとして、 lockファイルをコミットすると、 ほぼ間違いなくコンフリクトする。 そんなときの対処法を残しておこう。 ---- ------------------- ↓ 本題はここから ↓------------------- ## composer.lock コンフリクトを適当に解消して以下のコマンドを打つ ``` $ composer update --lock ``` ## package-lock.json コンフリクトした状態のまま以下のコマンドを打つ ``` $ npm install ```

元記事を表示

Laravel7 新たに追加された id, foreignId, constrained マイグレーションエイリアス

## Laravel7 で追加されたマイグレーションエイリアス

使用できるカラムタイプのエイリアス

– `id`
– `foreignId`

外部キー制約のエイリアス

– `constrained`

上記の3つのエイリアスが追加されてます。

## 環境

“`
$ php artisan -V
Laravel Framework 7.2.2
“`

## 使い方

“`php
Schema::table(‘posts’, function (Blueprint $table) {
$table->id();
$table->foreignId(‘user_id’)->constrained();
});
“`

上の定義は、下記のように定義したのと同じ内容になります。

“`php
Schema::table(‘posts’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->unsignedBigInteger(‘user_id’);
$t

元記事を表示

PHPStormでクラスのnamespaceを移動する

以前 [PHPStormでnamespaceを一括変更](https://qiita.com/kazuhei/items/fc52a27706db30b64ff7) でディレクトリの移動にあわせてnamespaceも一緒に移動する方法を書いたのですが、今回はクラスを特定のnamespaceに移動させる方法です。

PHPStormでファイルを開き、クラス名にカーソルを当てた状態でF6キーを押すと、
namespaceの移動のダイアログが出ます。

phpstorm.jpg

Move Class 〇〇 to namespaceのところを編集して保存するとクラスのnamespaceとあわせてファイルのディレクトリも移動します。

元記事を表示

PHP Intelephense の有償版を Neovim で使ってみる

[PHP Intelephense](https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client) は PHP の Language Server の一つ。
VS Code での利用例は

– [VSCode PHP用のインテリセンス拡張機能は「Intelephense」の方がオススメ! │ wonwon eater](https://wonwon-eater.com/vscode-php-intelephense/)
– [VS CodeのPHP Intelliphenseがとても心地よくコードを補完してくれる件 \- Qiita](https://qiita.com/motuo/items/1600ca1fc4e8dd6a19f2)
– [VSCode で PHP 開発するならインテリセンス最強の intelephense を使おう \| 株式会社ビヨンド](https://beyondjapan.com/blog/2020/02/intelephense-vscod

元記事を表示

Mac Catalina 10.15 に、古いバージョンのPHPをインストールする

# Mac Catalina 10.15 に、古いバージョンのPHPをインストールする

CakePHP2のアプリを修正依頼が合ったが、Mac Catalinaではhomebrewに
もう古いバージョンが無く・・・

(なんでそんなに古いまま、ほっといたんだよってツッコミはなしで、、、)

brew tap exolnet/homebrew-deprecated
でも、php 5.6

どうしても、php5.5を入れたいと調べてたら、binary packageを入れる方法がありました。

https://php-osx.liip.ch/

PHP 5.3〜PHP 7.3がある

## インストールする

“`
curl -s https://php-osx.liip.ch/install.sh | bash -s 5.5
“`

## pathを通す

“`
export PATH=/usr/local/php5/bin:$PATH
“`

元記事を表示

Phoenix LiveViewでもPHP的に気軽なWebアプリ開発ができるんです

[fukuoka.ex/kokura.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます :bow:

[前作のPHP的気軽さでWebアプリを作る方法](https://qiita.com/piacerex/items/25c82153976dcb6d57c1)を、今度はLiveViewでも展開してみたいと思います

前作同様、LiveViewにおいても、ルーティングは不要になります

なおLiveViewでは、パラメータ渡しによるMPA(Multiple Page Application)的ハンドリングでは無く、handle_event()等によるSPA(Single Page Application)的イベントハンドラが中心となるのですが、ここでは、できるだけMPAのようなテイストになるように作ってみます

LiveViewでのSPAフォーム開発に抵抗が高い方もまだまだ多いんでは無いかと思いますが、このスタートだと案外、気楽になれるかもです

# 本コラムの検証環境

本コラムは、以下環境で検証していま

元記事を表示

【Laravel7.2】Migrationを用いてテーブルを作成。Seederを用いてデータを投入する

# 前提環境
Laravel7.2環境を構築。Welcome!画面が表示された状態から開始。
その他、DBの設定等も済み。詳細は以下参照。

【準備編】https://qiita.com/katsuhito_01/items/db5b9581a2b6af6dc803
【導入編】https://qiita.com/katsuhito_01/items/439e3af4cea8ff00832c

# Migrationを用いてテーブルを作成
まずはMigrationを用いて参照するテーブルを作成する。今回は都道府県マスタを作成。

### Migration作成
Laravelプロジェクトのディレクトリ内にて、以下コマンドを実行

“`
# php artisan make:migration create_mst_prefectures_table
Created Migration: 2020_03_22_163920_create_mst_prefectures_table
“`
すると、database\migrations\日付_create_mst_prefectures_

元記事を表示

PHP サイト でも Capistrano (Ruby Gem)

## 環境

* Ruby 2.6.5

## 設定手順

### Capistrano 設定ファイルの用意

“`sh
bundle add capistrano
bundle exec cap install
“`

これで必要なファイルが作成されます。

あとは `deploy.rb`, `config/deploy/*` を変更して設定完了です。

ファイルを置けば使えるPHPサイトなら、認証設定程度を記述すればOKです。

### 設定ファイル例

“`ruby:staging.rb/production.rb
# server configuration
role :web, %w{ec2-user@123.123.123.123}
# file location
set :deploy_to, “/var/www/xxx”
“`

“`ruby:deploy.rb
# application name
set :application, “xxxxxx”
# repository
set :repo_url, “sample@sample.git.jp:/sa

元記事を表示

Mac Visual Studio Code Xdebugを頑張って設定したのに全くデバッグできなくて困った話

# 目的

– たくさんの人に協力してもらったのに思いも寄らない障壁があったため記憶に留めるためにまとめる

# 実施環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

# 困った内容

– 下記の手順を参考にMacとVisual Studio CodeとXdebugを使ったローカルデバッグ環境を立ち上げた。
– [Mac Laravel PHP Visual Studio Code Xdebugを用いたローカル開発環境でデバッグをできるようにする](https://qiita.com/miriwo/items/6edd6e1817def4fc11d5

元記事を表示

WordPressで複合検索(絞り込み検索)をプラグインなしで実装する方法

WordPressのデフォルトではキーワード検索しかできないため、カテゴリやカスタムフィールドなどで絞り込むことができない。

複合検索(絞り込み検索)を実装するには独自にフォームを作ってクエリを実行する。

## 複合検索のためのフォームを実装する
検索フォームはHTMLで自由に作れるので、検索したい項目を作成すればOK。

ここでは、検索キーワード、カテゴリ、カラーというカスタムフィールドを検索する。

`name`に入れる文字はクエリの作成で使うのでわかりやすい文字を入れておく。

フォームは、`search-form.php`のようなテンプレートとして作って、サイドバーなど好きなところから呼び出す。

“`php
// search-form.php

キーワード
PHPでRSSを読み込む方法

#初めに
プログラミング学習を独学で続けてきて、これは忘れそうだなと思いましたので、備忘録として記載します。

##RSSとは
RSSは「Rich Site Summary(リッチ・サイト・サマリー)」の略です。
ブログ等でこのようなアイコンを見たことがあると思います。
スクリーンショット 2020-03-22 23.25.15.png
これがRSSのマークです!!

では、このRSSは何をする時に使うのでしょうか?

続きは後日書きます。

元記事を表示

ElixirでもPHP的に気軽なWebアプリ開発をしたい(Phoenixより薄いWebFW実現?)

[fukuoka.ex/kokura.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます :bow:

Phoenixは、Rails同様、MVCやルーティングによるWebアプリ構築を前提に置いているため、PHPのような気軽さでWebアプリを作るのに向いていないと思われがちです

他にも、「Phoenixを使わず、薄いWebサーバを使いたい」といった声を聞くことがありますが、よくよく聞いてみると、ステータスコードをキメ細かく調整したり、サーバプロセスを自前で起動したい等の本来的な薄いWebサーバを必要としている訳では無く、「MVCを使いたくない」「ルーティングを書きたくない」といったレベルの要望だったりすることも多いです

そこで、Phoenixのルーティングやリクエストハンドラーを司る「Plug」の柔軟性を用いれば、PHPと同様の気軽さでWebアプリ開発することもできる … ということを実感していただくためにコラムを書きました

# 本コラムの検証環境

本コラムは、以下環境で検証しています(Windows

元記事を表示

nginx で仮想ディレクトリにアプリをインストールしたときの REQUEST_URI の書き換え設定

## やりたいこと

URL は `http://example.com/foo/bar/action_name?id=1` なんだけど、 REQUEST_URI には `/action/name?id=1` が入っててほしい場合の nginx の config の書き方。

## 設定例

“`/etc/nginx/conf.d/sample.conf
# アクセスされたURLの /foo/bar/ 以下の部分を、後で使うため変数 $request_uri_for_cgi, $query_string_for_cgi にセットする。
if ($request_uri ~* ^/foo/bar/(.*)$) {
set $request_uri_for_cgi “/$1”;
}
if ($request_uri ~* ^/foo/bar/(.*)\?(.*)$) {
set $query_string_for_cgi “$2”;
}

location ~* /foo/bar/(.*)$ {
include /etc/nginx/fastcgi_params

元記事を表示

【ポケモンで超ざっくり解説】オブジェクト指向

#この記事の対象ユーザー
– オブジェクト指向という言葉を知ったばかりの超初学者
– スクールなどで学び始めた駆け出しエンジニア
– オブジェクト指向を何となく理解している僕みたいなへっぽこエンジニア

**詳しく知りたくて本記事にたどり着いた人はブラウザバック推奨。
あくまでも本記事はオブジェクト指向のイメージをざっくり理解することが目的なので
具体的なコードの書き方には言及いたしません。**

#この記事でざっくり理解できるもの
– クラス
– インスタンス
– クラスの継承
– メソッド
– プロパティ

僕自身もようやく大枠を理解したばかりです。
修正箇所や説明の齟齬等ありましたらご指摘いただけると幸いです。

#オブジェクト指向とは
簡単に説明すると、
いろんな機能を持ったプログラムを一つのまとまりにして、それを使えるようにしましょうというもの。
プログラムのまとまりのことをクラスといい、
それを使えるようにしたものをインスタンスという。
これらをオブジェクト指向といい、サーバースクリプトを扱う上で必須の概念と言われています。

###自動車で例えるなら、
クラスが自動車の設

元記事を表示

Laravel セッションを使って一時的に値を保存しよう!

# 目的

– Larvelでセッションを使う方法は理解したらとても便利だったため忘れない様にまとめる
– DBは使用せずとにかくセッションを開く部分だけを紹介する

# 考え方

– 「値に名前をつけて保存する」と「値が必要な時に名前を指定して取得する」の処理を利用するだ毛である。
– 各クライアントのセッションIDという物と値の名前がそれぞれリンクして保存される。(これは値保存の概念として知っておいて欲しいが、セッションIDがクライアントに勝手に割り振られるため知らなくても実装できる)

# 書き方の例

– 値に名前をつけて保存する方法を下記に記載する。

“`php
session()->put(‘セッションに入れる値の名前’, セッションに入れる値);
“`

– セッションに入れた値を取り出す方法を下記に記載する。

“`php
取り出した値を格納する変数 = session()->get(‘セッションに入れた値の名前’)
“`

# より具体的な例

– 「Hello world」という文字列のセッションに入れてみる

元記事を表示

Laravel リレーションの取得 withメソッド

##withでeagerloadする
紐づいたテーブルから大量にデータ取得する場合、何度もDBアクセスしてデータを取得するとレスポンスがわるくなるので、リレーションを取得するときはwithを使う。

###使い方
下記のようにするとwithメソッドが利用可能

“`
Model::with(‘リレーション名’)->get();
“`

###実際の例

1対多の関係(Personが複数のBoardを持っている)
親:person
 ・[id, name, email, age]
子:Board
 ・[id, person_id, title, message]
withを使うと下記のような流れで値を取得できる。
※hasMany, belongsTo等、正しく設定されていること前提
①Boardだけを取得
②取得したBoardのperson_idの値をまとめ、それらのIDのPersonを取得

“`Board.php
$boards = Board::with(‘person’)->get();
return view(‘boards.index’, [‘boards’ =>

元記事を表示

Laravel7 消えたpassword_resetsテーブルを追え

Laravel7がリリースされまして初記事です。

## 事件発生

事件はLaravel7をインストールした時、起こりました。

“`
$ composer create-project –prefer-dist laravel/laravel .
$ php artisan -V
Laravel Framework 7.2.2

$ ls -1 ./database/migrations
2014_10_12_000000_create_users_table.php
2019_08_19_000000_create_failed_jobs_table.php
“`

`password_resets` ファアイルが消えた…!?

## 失踪したファイル

– https://github.com/laravel/laravel/pull/5257/commits/13e43893ba2457c3e49898f0066a5ce8d7ea74f4

ファイルが削除されてしまっていた…!

## 転がり込んだファイル

– https://github.com/larav

元記事を表示

XAMPPでXdebugが有効にならずERR_CONNECTION_RESETが出る

#XAMPPでXdebugが有効にならず、ERR_CONNECTION_RESETが出た

##概要
php5の開発時にはXdebugが有効だったが、php7だと有効にならずERR_CONNECTION_RESETが出た。
php5とは異なる設定を行うことで、php7でもXdebugを使うことができるようになった。
php5だとバージョンに合ったXdebugを探してダウンロードすれば良い。php7の場合、同様の手順では上手くいかないが、もともとXAMPPパッケージ内に準備されているDLLを指定すればOKだった。
##開発環境
Windows: Windows 10 Home
Visual Studio Code: ver.1.43.1
####php5のとき
XAMPP: ver.5.6.40 (php ver.5.6.40)
Xdebug: php_xdebug-2.5.5-5.6-vc11-x86_64.dll
####php7のとき
XAMPP: ver.7.3.15 (php ver.7.3.15)
Xdebug: php_xdebug.dll(パッケージ内にあるもの)

##

元記事を表示

HTMLページをHerokuにデプロイ

# この記事について
(お金をかけずに)SPAやアプリをインターネットに公開したいのにgithub pagesはもう使用済みでどうしよう、と思っていたところ、Herokuをおすすめしてもらい、実際に無料で公開できたので、手順を記録しておきたく記事にしました。

今回はHTML、CSS、JSファイルで作ったSPA(Single Page Application)をHerokuにデプロイしました。とりあえずこの記事ではデプロイするところまでをまとめています。

デプロイ後のログの確認や、コードの追加修正を反映させる操作などについては、別途まとめたいと思っています。

# 1. まず、HTMLで作ったSPAをアプリにする
HTMLやCSS、JSファイルだけで構成されたディレクトリはherokuではアプリとして認識されないため、HTMLファイルがあるディレクトリと同じディレクトリに`index.php`と`package.json`を追加して、phpアプリに変身させます。

“`index.php

“`

“`pa

元記事を表示

OTHERカテゴリの最新記事