PHP関連のことを調べてみた2021年02月19日

PHP関連のことを調べてみた2021年02月19日
目次

【アウトプットしたツイートで振り返る】PHP/MySQLだけで「音楽フェスランキング」作ってみた

# 初めに
元々フロントエンドエンジニア志望だったところから
サーバーサイドエンジニア志望に方向転換し
「自分の手でCRUD機能を実装できるのか!!PHPってすごい!!」
と、ひどく感動を覚え知識の定着を目的に作ったアプリです。

また開発の中で一番意識したのは**Twitterでアウトプット**をすることだったので、当時のツイートとともに見ていただけると臨場感がわかるかな、と思います。

※このQiita記事は「まずはアウトプット!」と思い、記事にしましたのでアプリの内容はいくつかお見苦しい点が申し訳ございません。随時、修正・更新していきます。

### 学習時間
PHP/SQL学習期間:約1週間(約50時間)
本アプリ開発期間:約3週間(約160時間)

※[参考ツイート](https://twitter.com/TkTkTkTkTako/status/1350229150561275905?s=20) (ProgateでPHPを学習開始)
※[参考ツイート](https://twitter.com/TkTkTkTkTako/status/1353350303072964609?s

元記事を表示

ユーザー単位で投稿できるカテゴリーを限定する

結論、ブロックエディタ解除してクラシックにするのが一番確実。

“`functions.php
function show_only_restricted_category() {
global $current_user;

if($current_user->ID==’123′){ //ユーザーID指定
//ブロックエディタの解除
add_filter( ‘use_block_editor_for_post’, ‘__return_false’ );

//カテゴリを指定するフィルターフック
add_filter(‘get_terms’, ‘restrict_categories’,10,1);
function restrict_categories($categories){
$isPostPage = (strpos($_SERVER[‘PHP_SELF’], ‘post.php’) || strpos($_SERVER[‘PHP_SELF’], ‘post-new.php’));
if(is_admin() && $isPostPa

元記事を表示

独学エンジニアのアウトプット集

本日学んだこと

①var_dumpとechoとの違いについて
・echo・・・文字列を出力する。
・var_dump・・・型と値を出力する。

②プログラムは基本的に逐次実行(上から下に処理されていく。)
より複雑な処理を行うために、if文(条件分岐)やwhile文(繰り返し処理)を使う。

③余白(半角スペースやTABスペース)を削除・・・trimを使用。

trim(fgets(STDIN));

④ユーザーがキーボードで入力したもの(下記書籍名)を一時的に変数に保存する。
echo ‘書籍名:’;
$bookTitle = (fgets(STDIN));

・fgets($handle)・・・()で指定した中から1行だけデータを取得する。
※$handle部分は読み取るデータ元

・STDIN・・・標準入力。簡単に言うとユーザーがキーボードで入力したもの。

本日出来るようになったことは、空白の削除とfgets(STDIN)を用いたユーザーが入力したデータを取得して、それを変数に一時的に保存して、ユーザーが入力したあとに別個所に表示すること。
※fgetsの際は、ユーザーの

元記事を表示

VSCode+Dockerコンテナ内のPHPをデバッグする際、host.docker.internalに接続できない問題の対処

# 概要
VSCodeでDocker Desktop(Windows)上のコンテナをデバッグする際、正しく設定しているつもりが以下のようなエラーが出てしまい正常に接続できない問題が起きていました。
この件について対処出来たためメモしておきます。

“`
Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port) 🙁
“`

# TL; DR
VSCodeのlaunch.jsonに以下の`hostname`の指定が必要でした。

“`jsonc

“configurations”: [
{
“name”: “Listen for XDebug”,
“type”: “php”,
“request”: “launch”,

元記事を表示

【PHP】Laravelのセッション管理を勉強する

#この記事について
[この記事](https://qiita.com/666mikoto/items/f9462235a5646669f7e5)で認証機能をセットアップしてアカウント登録、ログインができるようになりました。
ログイン時にセッション情報がLaravelでどのように管理されているか、ちょっと勉強してみましょう。

#環境
OS:Windows10 Home
PHP:7.4.15(XAMPP)
Laravel:6.20.16

#セッション管理の種類
Laravel6のセッションについては、[こちら](https://readouble.com/laravel/6.x/ja/session.html)のページで記載されています。

設定は“`.env“`と“`config/session.php“`に記述されていています。

“`:.env
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
“`

“`PHP

元記事を表示

PHP5上級試験/準上級試験まとめ

PHP8がリリースされ、バージョン7.2以下については公式サポートも終了していますが、今のところPHPの上級資格がバージョン5準拠のこれしかありません。

[PHP技術者認定機構 – PHP5上級試験/準上級試験](https://www.phpexam.jp/summary/expert/)

とはいえまぁ言語構造やテクニックなど基本的な部分は、バージョンが上がってもそこまで変わらないでしょうということで気が向いた時にまとめていきます。順次更新。

#### 出題範囲と割合(PHP技術者認定機構のページから抜粋)

| 目次 | 出題割合 | 出題割合 |
|:-:|:-:|:-:|
| 1章 | PHPについて | 0 |
| 2章 | PHP言語の基本 | 0 |
| 3章 | 関数 | 0.02 |
| 4章 | 文字列 | 0.02 |
| 5章 | 配列 | 0.04 |
| 6章 | オブジェクト | 0.1 |
| 7章 | ウェブに関するテクニック | 0.12 |
| 8章 | データベース | 0.08 |
| 9章 | グラフィック | 0.04 |
| 10章

元記事を表示

初心者が躓く関数と戻り値(返り値)【基礎】

関数

関数とは…

関数とは…
・頻繁に使用する処理を一つにまとめて何時でも呼び出せるようにする便利なものです。
・PHPにすでに実装されている組み込み型の関数と、functionで定義して自由に作ることができるユーザー関数の2種類存在します。

関数の種類

ビルトイン関数(組み込み関数)

PHPのシステムにすでに組み込まれている便利な関数。
例)
strlen…文字の長さを取得する関数
count…配列の要素の個数を取得する関数
などなど…[PHP Manual 関数](https://www.php.net/manual/ja/functions.internal.php)に多数記載があるので、わからないビルトイン関数があった場合はManualの”search”で検索・参照するとたくさんでてきます。
***

ユーザー関数

ユーザーが新規で作成する関数。
システムにすでに組み込まれている関数とは違い、自由に作ることができる。
ユーザー関数は必ずfunctionで定義をする。

Tencent Cloud SDK for PHPでSESメール送信

参考
優技録:https://www.yuulinux.tokyo/19204/

#### APIキーの発行

SDKに必要なキーを発行する

Cloud Access Management > Access Key > API Key > Create Key

AWSみたいに権限設定といった手順はなくCreate Keyを押すとKeyが発行された
発行したアカウントと同等の権限が付与されているのかも
SecretKeyを見るために2段階認証あり。

#### API Explorer

API Explorerを使うとsdkのサンプルが見れる。便利
試しにSESで登録したメールテンプレート一覧を取得してみる

Simple Email Service > Template Apis > ListEmailTemplates
API Keyを入力してRegionはap-hongkongしか選択不可、limitとoffsetは適当に1,0で
![スクリーンショット 2021-02-18 14.16.21.png](https://qiita-image-store.s3.ap-n

【Nginx】htmlをphpで実行する

この記事はcentos7+nginx+php7の環境で書いています。
#やりたいこと
**Apache**のときにこんな感じで書いていました。

“`httpd.conf
AddType application/x-httpd-php .html
“`
これをnginxで設定したい。

#PHP-FPM
`# vi /etc/php-fpm.d/www.conf`

“`www.conf
security.limit_extensions = .php .php3 .php4 .php5 .html
“`

#NGINX
必要なディレクティブに下記を加える。

“`
location ~ \.html$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fp

Composer.jsonとComposer.lockの違い

#Composer.json
パッケージ名を書き込んで
`composer install`したら、そのパッケージをvendorフォルダーの中にインストールしてくれる。
#Composer.lock
`composer install`でインストールしたパッケージのバージョン情報とその他諸々が書き込まれる。

DataTableが表に適用されない問題

##概要
jQueryの処理でHTMLのTableを綺麗に表示したり、ソート、ページングなどの機能を手っ取り早く提供してくれる
DataTableがなぜか適用されない問題を解決

##原因
テーブルのデータをPHP(Laravel)からJSONで渡して、Ajaxで動的に生成する流れでテーブルを生成していた。
DataTableの処理部をAjaxメソッドの外側で書いていたのでAjax動作時に同時に処理が行われず
適用されていなかった。

##解決法
jsのAjaxメソッドの内側にDataTableを入れる

youtube-dl でファイル名を IDで保存する方法

youtube-dl でファイル名を IDで保存する方法です。

まずは youtube-dl のインストール方法

““bash
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl ;
sudo chmod a+rx /usr/local/bin/youtube-dl ;
““

コマンドラインからファイル名を IDで保存

““bash
youtube-dl -o “~/%(id)s.%(ext)s” “https://www.youtube.com/watch?v=XayoaxJQ_hA”
““

ちなみに php と apache で web から叩く場合は

““php:youtube_dl_id.php

変数名で指定したクラスのインスタンスを作る。

# 変数名で指定したクラスのインスタンスを作る

## ソースコード
“`php5
say();

$className = ‘Cat’;
$cat2 = new $className;
$cat2->say();
“`

## 実行すると

“`bash
php new_instance_useing_value.php
Nya
Nya

“`

## 説明

“`php5
$className = ‘Cat’;
$cat2 = new $className;
$cat2->say();
“`

変数 $className に格納された Cat クラスを生成する。

## 参考記事
https://qiita.com/gorogoroyasu/items/d8a6e032eb4debb147ca

【PHP】Laravel6の認証画面を日本語表示しようと思ったら絶妙にハマった話

#この記事について
[この記事](https://qiita.com/666mikoto/items/f9462235a5646669f7e5)で認証機能をセットアップしたので、画面の文字を日本語化しようとしたら少しハマった話…

#環境
OS:Windows10 Home
PHP:7.4.15(XAMPP)
Laravel:6.20.16

#config/app.phpファイルの修正
日本語環境に設定します。

“`php:config/app.php(変更箇所のみ)
‘timezone’ => ‘Asia/Tokyo’,

‘locale’ => ‘ja’,

‘fallback_locale’ => ‘en’,

‘faker_locale’ => ‘ja_JP’,
“`

#viewの確認
とりあえずRegister画面を日本語化したいので、一度viewファイルを確認する。

“`PHP:resources/view/auth/register.blade.php
@extends(‘layouts.app’)

@section(‘content’)

【PHP】Laravel6で遊ぶ(認証機能のセットアップ)

#この記事について
最近Laravelで遊んでいるので、その備忘録です。
今回は標準で搭載されている認証機能を設定してみる。

※注意※
個人の意見が含まれる可能性がありますので、コード等の良し悪しはご自身でご判断ください。
もし間違いがありましたら、ご指摘をお願いします。

#環境
OS:Windows10 Home
PHP:7.4.15(XAMPP)
Composer:2.0.9
Laravel:6.20.16

#認証機能のセットアップ
[前の記事](https://qiita.com/666mikoto/items/3e90b31d63609816091e)でLaravelのセットアップをして、Laravelの画面を表示しました。
laravelは認証機能(ログイン)を凄く楽にセットアップすることができます!
(Laravel6から設定方法が変更になっているようなので注意!)

##DB作成
ログインアカウント等をDB上で管理するので、まずDBの作成と接続の設定をします。

本環境はXAMPPを使っているので、XAMPP Control PanelからApacheとMySQLを

【Laravel】カラム型の変更

#はじめに
知識を整理するための個人的な備忘録です。

一度作成したカラム型の変更方法をまとめます。

#方法
まず`Laravel6.x`では、以降のカラムタイプのみ変更可能。
>bigInteger、binary、boolean、date、dateTime、dateTimeTz、decimal、integer、json、longText、mediumText、smallInteger、string、text、time、unsignedBigInteger、unsignedInteger and unsignedSmallInteger

###1.ライブラリのインストール
下記のコマンドで`doctrine/dbal`をインストール

“`
$ composer require doctrine/dbal
“`
###2.マイグレーションファイルの作成
ファイル名はなんでも良いが、何の内容の`migration`ファイルが実行されたかがわかる名前をつけるのが良い。

“`
$ php artisan make:migration change_対象のカラム名_変更前カラム型_

PHP5上級試験/準上級試験の上級合格に挑戦(5) 4章文字列前編

#参考
[PHP5技術者認定試験(上級)に学ぶ、文字列との和解(2) | @tmak_tsukamoto
さん](https://qiita.com/tmak_tsukamoto/items/41673ab2d6fedeef0980)

#4章 文字列

### キーワードと概要
エスケープ/変数の展開/ヒアドキュメント/言語構造/printf/デバッグ関数/文字列操作関数/エンティティ置換関数・エンコード処理関数・エスケープ処理関数/文字列比較関数/文字列分解・結合関数/文字列検索関数/

+ ここでは基本的に関数とメソッドが多く出てくる。テーマごとに分けてしっかり覚える
+ 変数の展開・ヒアドキュメント・言語構造でマルバツ問題出題が多い
+ セキュリティ上、エスケープ処理やエンティティ置換などの関数は他の章でも多々出てくる印象。ここで覚えておくと後が楽。

### エスケープ
+ もともと文字列を囲む場合””(ダブルクォート)と”(シングルクォート)の2つがある
+ 上記とバックスラッシュをただの文字列として入れたい場合エスケープシーケンス(特殊な文字の前にバックスラッシュ(\

PHP Construct,Getter,Setter,オーバーライドについてまとめてみた

# はじめに
PHPの
**Construct,Getter,Setter,オーバーライド**について
まとめてみた。

Construct,Getter,Setter,オーバーライド
 などが、よくわからない方へおすすめ

## Construct (コンストラクタ)
**Construct (コンストラクタ)**は
**インスタンス(new)**された時点で、**自動で呼び出されるメソッド**のこと。

**※使い道**
・**インスタンス作成時の初期化**
 (※初期化はあくまでも初期値の設定、
  最初の仕様に戻すこと。
  値が0になったりり、消えたりする訳ではない)

######サンプルコード
“`php

Laravelでコロナ禍での体調管理を意識した簡単な体調記録アプリを作ってみた

#コロナ禍での体調管理を意識した体調記録アプリを作ってみた

##はじめに
 HTML/CSSってなに?ってところから始まりプログラミング学習歴約1年の私が就職活動のポートフォリオのひとつとして作成したアプリの紹介。
Laravel勉強し始めてチュートリアル的にタスクアプリを勉強した後のアプリ開発第二段のお話。

##開発した経緯
 Laravelを勉強し始め、何か作ってみたいと考えていた。新型コロナウイルスが流行しており、日々の体調管理が必須となっていたため、コロナチェックを意識して体温、体調の記録アプリを作ってみた。

##開発環境
* windows10
* XAMPP 7.4.14 (PHP 7.4.14)
* Laravel Framework 6.20.7
* HTML/CSS、BootStrap、JavaScript(jQuery)
* サーバーはVPS

##完成したアプリはこちら

[体調管理アプリCondition](http://condition.sono-portfolio.work/)
[GitHub](https://github.com/N0S0/Con

laravel6 現在実行可能なphp artisanコマンドを出力する

# 目的

– 実行可能な`$ php artisan`コマンドを出力する方法をメモ的にまとめる

# 方法

– アプリ名ディレクトリで下記コマンドを実行する。

“`terminal
$ php artisan list
“`