- 0.0.1. メールアドレスからサブドメインを抽出するには
- 0.0.2. phpMyFAQの業務導入顛末記(その1)
- 0.0.3. 【4枚目】おっさんが入門CakePHP (動画第5回:Modelを使ってデータを表示)
- 0.0.4. VSCode x DockerでXdebugを使えるようにする
- 0.0.5. 【Laravel】ルーティングの基本的な書き方
- 0.0.6. ☆herokuでのしょうもない凡ミス、、☆エンコードを直しても直しても変わらない
- 0.0.7. Amazon Linux 2 に複数PHPバージョンを同居
- 0.0.8. PHPでメールアドレスからサブドメインを除いた形のドメインを抜き出す
- 0.0.9. composerプライベート自作ライブラリをgitlabに作成する
- 0.0.10. php version 違いでエラーになる
- 0.0.11. PHPの便利な関数(4)
- 0.0.12. 【laravel】laravel+Reactを使ってSPAにしてみる
- 0.0.13. 【Laravel】@sectionと@yieldの関係(初心者向け)
- 1. @yield(‘title’)
メールアドレスからサブドメインを抽出するには
PHPでさっくりできそうに思いますが、実はあまり簡単にいかない問題です。
順番に考えていきましょう。
1. ローカルパート分割の問題
2. ドメイン名分割の問題## メールアドレスの仕様
メールアドレスの仕様については[RFC 5322 & 5321に沿ったメールアドレス(local-part)に使える文字まとめ – Qiita](https://qiita.com/yoshitake_1201/items/40268332cd23f67c504c)が詳しかったので参照してください。又聞きの情報ではなく[RFC 5322 – Internet Message Format 日本語訳](https://tex2e.github.io/rfc-translater/html/rfc5322.html)を読み込んでみるのも良いでしょう。
https://qiita.com/yoshitake_1201/items/40268332cd23f67c504c
メールアドレス検証のために使えるPHP組み込み機能は[`filter_var()`](https://www.php.n
phpMyFAQの業務導入顛末記(その1)
**1.背景**
筆者の職場では、主にユーザーのサーバーやネットワーク環境の構築~保守・運用をやっています(筆者はやってないけど)。
作業は小規模ながらも多量の案件を効率よくさばく必要があり、特に顧客ごとの担当も決まっていないため、過去に各人が経験したノウハウやヒヤリハットをどう全員に共有するかが課題となっていました。そういった情報共有を目的として、OSSなどフリーの「情報共有ツール」と称するツールを探している途中で見つけたのが、今回取り上げるOSSのphpMyFAQです。
https://www.phpmyfaq.de/これがなかなかの「めっけもん」やったんで、以降そのインストールからデータ移行、業務への導入に関してその顛末をご紹介していきたいと思います(現在進行形)。
***
**2. phpMyFAQの特徴**1) PHPを使った、フリーのオープンソースツールである:ある程度の調整や不具合は自分で対処
最新版のver.3.0.9は、PHP7.2~で稼働します。
もちろんソースも公開されていて、カスタマイズ可能です。
https://www.p
【4枚目】おっさんが入門CakePHP (動画第5回:Modelを使ってデータを表示)
今回はDB使って画面表示するらしい。
今回も動画に従って進めます。XAMPPコンパネで各サービスを開始
![xampp_st.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/f0b2c05d-9e49-a6a3-89e9-ab611132bd58.png)ブラウザでアパッチの動作確認。
※databaseの個所が赤いのでDB接続できていないということ。
![cake_st.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/d5975d06-1ef6-608f-ecd1-9c594bc2e6e4.png)XAMPPコンパネでphpmyadminを起動
![x_mysql_admin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/3a56cb3d-390b-5661-225a-e30848ef8
VSCode x DockerでXdebugを使えるようにする
# はじめに
この記事では、Visual Studio Code、Docker Desktop の導入方法は説明しません。
Xdebugのバージョンは2系を使います。
# 環境
- macOS Big Sur –version 11.3
- Visual Studio Code –version 1.60.0
- Docker Desktop –version 3.6.0
# Visual Studioで必要な拡張機能をインストール
felixfbecker.php-debug をインストールしてください
![スクリーンショット 2021-09-07 21.04.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479835/e61d43dc-dd55-d948-180d-20f22e2a4aa4.png)
# ディレクトリ構成
“`
.
├── .vscode
│ └── launch.json
├── Dockerfile
【Laravel】ルーティングの基本的な書き方
#はじめに
#ルーティングとは
「ユーザーがこのURLにアクセスしたらこの機能を呼び出す」というような感じで、URLと機能を紐付ける工程のことを言います。
Laravelでは、ユーザーからリクエストが送信されたら、ルーティングにしたがって決められたコントローラーのアクション(メソッド)が起動するという流れになります。
ルーティングは、routesディレクトリ内のweb.phpにRouteファサードを使って記述していきます。#記述方法
(1)「/」にアクセスしたら、`views`の`welcome.blade.php`を表示する。“`php:web.php
Route::get(‘/’, function () {
return view(‘welcome’);
});
“`(2)「/menu」にアクセスしたら、`MenuController`のindexアクションを実行し、menusディレクトリ内の`index.blade.php`を表示する。
“`php:web.php
Route::get(‘/menu’, ‘MenuController@index’
☆herokuでのしょうもない凡ミス、、☆エンコードを直しても直しても変わらない
##状態
①herokuへDBをプッシュできなかった。
②原因がわかっていて、エンコードのバイト数が基準を超えてしまっている。
③エンコードのバイト数を増やす記述を増やす記述を追記する
④なぜか変わらない、、
⑤どうやらherokuでプッシュするときは、ローカルでもプッシュしないといけないという凡ミス、、“`php:ターミナル
$ heroku run php artisan migrate
“`###②原因がわかっていて、エンコードのバイト数が基準を超えてしまっている
“`php:ターミナル
SQLSTATE[42000]: Syntax error or access violation: 1071
Specified key was too long; max key length is 767 bytes
“`###③エンコードのバイト数を増やす記述を増やす記述を追記する
“`
記述①
php:/app/Providers/AppServiceProvider.php
…
記述②
use Illuminate\Support\Facade
Amazon Linux 2 に複数PHPバージョンを同居
## Amazon Linux 2 に複数のPHPバージョンを同居
PHPインストール時に複数バージョンを同居しても問題ないよう、インストールしてる手順をメモ
:::note warn
汎用的なやり方ではないと思いますが、簡単に設定・切替えしたい人向けです。
:::① yum updateした後に、remiリポジトリを追加
“`sh
# 最新版へupdate
sudo yum -y update
# remiリポジトリを追加
sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
“`② 利用するPHPバージョン毎にインストール
“`sh
# PHPを使うバージョン毎にインストール
for v in 70 74 80; do sudo yum -y install php$v php$v-ph
PHPでメールアドレスからサブドメインを除いた形のドメインを抜き出す
以下のコードを利用することで、サブドメインを除いた形で、メールアドレスからドメインを抜き出すことができます。
※ブランドTLDは処理出来ません(ブランドTLDは別途処理方法を検討する必要があります)
“`php
composerプライベート自作ライブラリをgitlabに作成する
# 概要
自作ライブラリをcomposer/gitlabを介して使う# 手順
## トークンの作成
アクセス用トークンを作成する。https://${gitlab_url}/profile/personal_access_tokens
にアクセスし、Scopeをapiで作成。
値をメモしておく。## ライブラリ用プロジェクト
### projectの設定
gitlabプロジェクトのページで、Setting>General>Visibility, project features, permissionsにアクセス。
パッケージとして使うことを許可する。### composer.json
以下の記載を入れる
“`json
{
“name”: “${namespace}/${library-name}”,
“type”: “library”,
“version”: “${version}”
}
“`この状態で、タグをつけてプッシュしてする。
### ライブラリの発行
以下のコマンドをたたきライブラリとして登録する。“`bash
curl –
php version 違いでエラーになる
Fatal error: Uncaught Error: Call to undefined function mysql_connect()
![スクリーンショット 2021-09-07 8.53.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645197/c89d8564-0a4a-fed0-0c0f-b24c7df10d54.png)
バージョンが違うと出る
ネットで検索すると
バージョンによって書き方が変わると書いてあったphp version 7に書き換えるには、
$conn = mysql_connect($sv,$user,$pass) or die(“接続エラー”);
空
$conn = mysqli_connect($sv,$user,$pass) or die(“接続エラー”);
mysql_connect ——> mysqli_connect というふうにiをmysqlの
後につけることで解決することができる
そうすればエディタで表示さ
PHPの便利な関数(4)
# 概要
* PHPが用意している便利な関数について、忘備録として記載していく。
* また、PHP7系を前提とする。
* 右記
[PHPの便利な関数一覧](https://qiita.com/andota05/items/fc80d2210810a36ec156)
に他の関数について記載した一覧を作成しています。# ラインナップ
* array_key_exists( )
* sprintf( )
* empty( )
* isset( )
* is_array( )## array_key_exists( )
* 指定したキーまたは添字が配列にあるかどうかを調べる
* 存在すれば true を返す
* 存在しなければ false を返すhttps://www.php.net/manual/ja/function.array-key-exists.php
“`test.php
// keyを持った連想配列を定義する
$array = [
‘id’ => 1,
‘name’ => ‘Taro’
];// keyに存在するname,存在しないci
【laravel】laravel+Reactを使ってSPAにしてみる
初書:2021/09/06
mac : 11.5.2
php:v8.0.6
laravel:v8.57.0# 前書き
最近Reactを知ったのでせっかくならLaravelでも使ってみよう、というメモ。
# 前提
Laravelインストール済み。
[素のPHPしか触ってなかった人がlaravelを触ってみる – Qiita](https://qiita.com/yuu_1st/items/6e8c8b74478de37918eb)# インストール
まずはuiをインストール
“`zsh
% composer require laravel/ui
“`その後はuiをreactに変更
“`zsh
% php artisan ui react
“`インストールとmix
“`zsh
% npm install && npm run dev
“`もし、`Please run Mix again.`と言われた場合はもう一度`npm run dev`します。
以上
# Typescriptにする
ReactといえばTypescript…と、勝手に思って
【Laravel】@sectionと@yieldの関係(初心者向け)
#はじめに
レイアウトを作成するにあたって必須の`@section`と`@yield`について簡単に説明します。#`@section`と`@yield`の関係
`@section`の書き方には、“`php:index.blade.php
@section(‘セクション名’, ‘画面に表示する値’)
“`
と記述するパターンと、“`php:index.blade.php
@section(親テンプレートの@yield名)
~~~画面に表示する内容~~~
@endsection
“`
として、親(ベース)となるテンプレートに記述された`@yield(名前)`部分に、`@section`と`@endsection`に囲まれた部分がはめ込まれるというパターンがあります。#具体例
“`php:layouts/app.blade.php(親となるテンプレート)
@yield(‘title’)
@yield(‘content’)“`
“`php:menus/index.blade
【PHP基礎】ページネーションの作り方
#はじめに#
PHPを使ったページネーションの実装方法について勉強しましたので、備忘録として残していきます。
ページを遷移させるだけですが、素のPHPで書こうと思うと結構ロジックを考えなければなりません。なるべく丁寧にまとめていきますのでよろしくお願いします。#ページネーションとは#
ページネーションとは、ECサイトの商品件数や掲示板のコメントなど件数が多い場合に、一気に表示させるのではなく、ページ遷移を行うことで数件〜数十件ずつ取得していく手法のことです。普段何気無く使っている機能ですが、実装しようとすると結構ロジックを考えなければなりません。
何か機能を作る場合は、まず言語化することが大切です。今回の場合は下記のように言語化できるでしょう。ECサイトの商品件数を例としてあげていきます。①商品件数を1〜10件だけ取得する。
②GET通信でページ数の値を与える
③リンクを作成する
④リンク先の値をチェックこのような順序で進めていきます。
それでは実際にやっていきましょう。##商品件数を1〜10件だけ取得する##
データベースから商品情報を取ってくる際は、SQ
PHP タイプヒンティング(型宣言)を記載して引数、戻り値のデータ型を指定する
# 目的
– タイプヒンティングを用いて引数と戻り値のデータ型を指定する方法をまとめる
# 情報
– 下記のサービスを用いて動作確認を行った。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
– 下記のように記載することで引数の型を指定する事ができる。
“`php
function 関数名(型名 変数名) {
関数内部の処理
}
“`– 下記のように記載することで戻り値の型を指定する事ができる。
“`php
function 関数名(): 型名 {
関数内部の処理
}
“`### 利用できる型(PHPのバージョンにより異なる。下記はPHP7)
| 型名 | 概要 |
| — | — |
| bool | 真偽値 |
| float | 浮動小数点 |
| int | 整数 |
| string | 文字列 |
| array | 配列 |
| callble | コールバック関数 |
| クラ
【PHP8.1】静的変数を継承したときの挙動が変更になる
細かすぎて伝わらない変更点。
PHPには[静的変数](https://www.php.net/manual/ja/language.variables.scope.php#language.variables.scope.static)という機能があります。
“`php
class A{
public static int $hoge = 1; // 普通のクラス変数public function foo(){
static $foo = 1; // ← これ
return $foo++;
}
}$a = new A();
$a->foo(); // 1
$a->foo(); // 2
$a->foo(); // 3
“`関数・メソッド内でstaticを付けて変数定義すると、その変数値はプログラムが終了するまでずっと保持されます。
イメージとしては、関数ローカルのクラス変数みたいなかんじでしょうか。そしてこの静的変数、クラス変数と並べてみると動作がほんのり微妙に異なっているんですよね。
“`php
class A
{
public
Target class [〇〇〇TableSeeder] does not exist. って出てきたときにやったこと。
## 事象
Seederファイルに目的のデータを追加して、
DatabaseSeeder.phpにも追加。
`php artisan migrate:refresh –seed` を実行。“`
Illuminate\Contracts\Container\BindingResolutionException : Target class [XxxxxTableSeeder] does not exist.
“`
なぜかエラーに。
typoを疑い、探してみるも見つけられず。## 原因
composerのリロードが必要だったようです。“`bash
composer dump-autoload
# リロードした後に再作成。
php artisan migrate:refresh –seed
“`
今度は問題なく再作成することができました。
〜〜 does not exist のようなエラーは、変にググるよりキャッシュを疑った方が効率的ですね!“`bash
php artisan cache:clear
php artisan config:clear
php
【Laravel】Bladeで共通で参照できるグローバルな変数を定義する。
自分用のメモとして残します。
各コントローラでわざわざviewに渡す変数を定義するのは面倒。
AppServiceProviderのbootメソッドで、全てのviewで参照できる変数をに定義する方法をメモ。
#やり方“`app\Providers\AppServiceProvider.php
namespace App\Providers;use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Auth;class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
}/**
* Bootstrap any application services.
*
*
【令和も対応】PHPで和暦⇔西暦変換
西暦を和暦に変換する処理を書く機会があって、また必要になるかも。
と思い、汎用的に使い回せるよう、関数を作成してみました。PHPで、西暦⇔和暦変換をする機会のある方は、参考にしてください。
そんな難しくないです。#PHPで西暦 → 和暦
“`php:wareki.php
// 西暦 => 和暦
function wareki($year) {$eras = array(
array(‘year’ => 2018, ‘name’ => ‘令和’),
array(‘year’ => 1988, ‘name’ => ‘平成’),
array(‘year’ => 1925, ‘name’ => ‘昭和’),
array(‘year’ => 1911, ‘name’ => ‘大正’),
array(‘year’ => 1867, ‘name’ => ‘明治’)
);foreach($eras as $era) {
$base_year = $era[‘y
【PHP】余り計算の活用方法
“`PHP
4 % 4 余りは0
3 % 4 余りは3
2 % 4 余りは2
1 % 4 余りは1
0 % 4 余りは0
“`