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

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

PHPの基礎の基礎について覚え書きをしてみる

##HTMLにPHPを埋め込んで表示させる
でphpを埋め込み表示することができます。

“`index.php

>>こんにちは!(曜日)
“`
‘こんにちは’. ‘田中さん’ => ‘こんにちは田中さん’
.(ドット)で文字列を結合ができる。

##変数を定義する
$(変数) = 〜 で変数を定義できます。

“`index.php

または

>>おはよう!
“`

## 条件分岐
if文を使うことで条件分岐ができます。
if~else,if~elseif~elseでさらに細かい条件分岐ができます。

“`index.php

元記事を表示

Dependency Injection(依存性の注入)とは

 私は、最近PHPとLaravelに触れ始めた初心者エンジニアなのですが、
Laravelのドキュメントを読んでいたら「依存」という言葉がたくさん出てきて、
わからなかったので調べてみたら、とても理解が難しかったので、分かった点を
まとめてみました。

#Dependency Injection(DI)とは
 日本語では「依存性の注入」と訳される。
 **「あるオブジェクトを、それを使用するオブジェクトに渡す」**
という**デザインパターンの1つ。**
##DIパターンの例 ① コンストラクタ・インジェクション

“`php
// 使用する側のクラス
class Client
{
private $service;
// コンストラクタでServiceオブジェクトを渡している。
public function __construct(Service $service)
{
$this->service = $service;
}

public function doSomething()
{

元記事を表示

【WordPress】クライアントワークにおけるブロックエディタ対応テーマ構築時の小ネタ集

# はじめに

WordPress5.0にブロックエディタが搭載されてから、一年半経ちました。

エンジニアやブロガーの間では「ブロックエディタすげえ!」「もうクラシックエディタには戻れない。。」といった声を良く聞きますが、実際のクライアントワークにおいては、まだまだ浸透していないように思います。

これまで多数のWordPressサイト構築案件を担当してきましたが、特にデザイン優先のサイトやコーポレートサイト構築ではブロックエディタの話が出る事も無く、「ブロックエディタ?何それ?」というクライアントさんや元請け会社さんばかりでした。

ですが先日、ブロックエディタで再現しやすいデザインであった事、かつクライアントさんがゴリゴリ記事を投入していきたいという熱量を感じられた案件があったため、「**ブロックエディタにフル対応したコーポレートサイト構築**」という方針を取りました。

その開発の中で、ブロックエディタの魅力を十分に引き出しつつ、不慣れなクライアントさんでも使いやすいように取り入れたノウハウをまとめて共有したいと思います。

## 対象とする方

+ HTML5/CSS3に沿っ

元記事を表示

学習日記 #3

# OAuthの概念
「認可情報の委譲」のための仕様である。
・予め信頼関係を構築したサービス間で、ユーザーの同意のもと、セキュアにユーザーの権限を受け渡しする。

#final修飾子
オーバライドを明示的に禁止することができる。

#ボリモーフィズム(Polymorphism)
多様性と訳され、日本語でも抽象的である。要約すると、「同名のメソッドで異なる挙動を実現する」ことである。

#トレイト(Trait)
トレイトとは、再利用可能なコード(メソッド、プロパティ)をまとめて切り出す仕組みである。「断片的なクラス」

“`
trait トレイト名 {
….プロパティ/メソッドの定義….
}
“`

traitブロックの構文は以下の制約がある。
・定数は持てない
・クラスの継承、インターフェイスの実装は出来ない

型を継承するインターフェイスと、実装を継承するトレイトの違いをきちんと理解する。

現在のクラス/親クラスと衝突した場合、
1、現在のクラスのメンバ
2、トレイトのメンバ
3、親クラスのメンバ

#その他
*as句を利用することで、メソッドのアクセス権限を変

元記事を表示

Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その4:「Larabelアプリケーションの初期化の流れ」

### INDEX
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!

– [その1「マイグレーションファイルを見てみよう」](https://qiita.com/xioncc/items/1dcec2fbe3485b7e769a)
– [その2「$app[‘db’]って何者?」](https://qiita.com/xioncc/items/cd4a46e5aca16b13174d)
– [その3「Repositoryクラス」](https://qiita.com/xioncc/items/1ce2132594c4596a73ae)
– [その4「Larabelアプリケーションの初期化の流れ」](https://qiita.com/xioncc/items/a17d7f905d4a5abf8103)

## Larabelアプリケーションの初期化の流れ
Laravelをマイグレーションファイルから少しずつ読み始めて、どうやらお作法であろう存在にいくつか出会いました。そろそろ初期化の流れを追ってみようと思います。

元記事を表示

phpでのcsrf対策

#csrf
csrfとはcookiesにログイン情報が残っている状態の時、全くアプリと関係のないリンクを押した時に、そのリンクからアプリのDBアクセスをして変更をしようとする事。これを防ぐためにsessionを利用する。sessionはURLをまたいでファイルが変わっても、値が残るような配列。

アプリのページが立ち上がれば、SESSIONの中にトークンを入れるようにする。

それをHTMLのformに以下を挟み込む

“`php

“>
#h()はエスケープ
“`

サーバ側で$_SESSION[‘token’]と送られてきたtokenに入っている値が同じかどうかを調べる。同じならば全ての送られてきた値が、正常の送信と判断する。

元記事を表示

phpでのcsrf対策

#csrf
csrfとはcookiesにログイン情報が残っている状態の時、全くアプリと関係のないリンクを押した時に、そのリンクからアプリのDBアクセスをして変更をしようとする事。これを防ぐためにsessionを利用する。sessionはURLをまたいでファイルが変わっても、値が残るような配列。

アプリのページが立ち上がれば、SESSIONの中にトークンを入れるようにする。

それをHTMLのformに以下を挟み込む

“`php

“>
#h()はエスケープ
“`

サーバ側で$_SESSION[‘token’]と送られてきたtokenに入っている値が同じかどうかを調べる。同じならば全ての送られてきた値が、正常の送信と判断する。

元記事を表示

PHPのライブラリ「qr-code」でQRコード生成を実装した【CakePHP】

今回はCakePHPでPHPのライブラリ「qr-code」を活用して、QRコード生成を実装しました。「qr-code」はPHPのライブラリなので、CakePHPでなくても実装できます。

## Composerでqr-codeをインストール

ターミナルでqr-codeをインストールします。

“`
$ composer require endroid/qr-code
“`

問題なくインストールできるとvendorディレクトリ直下にchillerlanディレクトリがダウンロードされます。

![スクリーンショット 2020-04-21 17.50.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264073/5951599b-966e-1993-808d-754614a95d42.png)

## QRコード生成

今回は、ビューのヘルパーを使って生成する関数を定義しました。関数はコントローラでもモデルで定義しても問題ありません。

“`php:src/View/Helper/CommonH

元記事を表示

俺のLaravelがこんなに遅いわけがない

![Laravel](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F52879%2F8a95a825-1acd-cec0-d76c-d15184b1c8f7.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=119dc04f00532142bae7aef04ffd0674)

## 環境(ベース)

– PHP 7.4.5
– Laravel 7.5.1

Docker for Macでnginxとphp-fpmコンテナをunixソケットで繋いだ環境で試してます。

### 環境の差異

1. OPcache なし
1. OPcache あり、プリロードなし
1. OPcache なし、プリロードあり

## 比較方法

– Laravelのwelcome画面をabコマンドの結果で比較します。

Requests per second(1秒間に捌けるリクエスト数)、Time

元記事を表示

Composerを更新しようとしたら「SHA384 is not supported by your openssl extension, could not verify the phar file integrity」で失敗する

# 事象

コマンド `composer selfupdate` を実行してComposerの更新を試みたところ、以下のエラーが発生する

“`
[UserName: laravel]$ composer selfupdate
Updating to version 1.10.5 (stable channel).
Downloading (100%)

[RuntimeException]
SHA384 is not supported by your openssl extension, could not verify the phar file integrity

self-update [-r|–rollback] [–clean-backups] [–no-progress] [–update-keys] [–stable] [–preview] [–snapshot] [–set-channel-only] [–] []

[UserName: laravel]$
“`

# 原因

利用しているCompose

元記事を表示

NASのバックアップ対象ディレクトリをinotifyで監視して更新されたディレクトリのみをrsyncでミラーリング

前回[**こちら**](https://qiita.com/akebi_mh/items/56be96a98b73fe940168)で書いたミラーリングと世代管理バックアップの2系統のスクリプトのうち、ミラーリングのほうのスクリプトについてパフォーマンスアップの修正を行ないました。

前回のスクリプトでは大まかな流れとしてduコマンドの結果を元に更新対象ディレクトリを絞り込んでrsyncに渡すという動作を行なっていましたが、監視対象内のサブディレクトリ数が多くなるとduコマンドの実行時間もそれなりにかかるようになるので、この部分をinotifywaitコマンドでの監視に置き換えています。

###inotifywaitを使えるよう準備

inotify-toolsがインストールされていない場合inotifywaitコマンドも使えませんので、その場合はまずinotify-toolsをインストールします。

**inotify-toolsをインストール(Debian系の場合)**

~~~~
$ sudo apt install inotify-tools
~~~~

inotifywai

元記事を表示

PHPスコープについて

##スコープについて
スコープとは、ある場所で定義された変数や関数使える範囲のことをスコープという。
PHPの変数には、グローバル変数とローカル変数がある。

###ローカル変数
ローカル変数は、決められた範囲内でしか使えない変数。例えば、関数の中で変数が定義されたら、その関数内でした使うことができない。

“`

“`

###グローバル変数
グローバル変数とは、ローカル変数とは違い、関数の外でも使える変数のこと。
先ほどのローカル変数を外で使えるようにするには

“`

元記事を表示

[nginx]https接続のnginxでPHPを動かす[PHP]

#nginxでPHPを動かす

httpではPHPが動くのにhttpsで動かない状態を改善する方法をメモとして残します。

nginx/conf.d/default.conf設定に以下を追加します。
rootフォルダは任意に変更してください。

“`default.conf
server {
listen 443 ssl http2;
server_name sample.com;

if ($request_uri ~ ^.*/index.html$){
rewrite ^(.*)/index.html$ $1/ permanent;
}

location / {
root /html;
index index.html index.htm index.php;
}

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EEC

元記事を表示

【PHP】Yahoo!広告APIでレポートデータを取得したい!

#はじめに

GoogleAPIについて書いたので、ついでにYahoo!もメモ。

Yahoo!も従来の「Yahoo!プロモーション広告API」から「Yahoo!広告 API」と名称を一新し、
新APIが2月20日に正式リリースされた。

これに合わせてサービスも名称を変更し、
「Yahooスポンサードサーチ」は「検索広告」に、「Yahooディスプレイ広告」は「ディスプレイ広告」に。

Googleと同じくoAuth2認証になった。ほかもいろいろ変わってるぽい。
個人的には認証以外にはそれほど大きく変わったわけではなさそう?という印象。

旧APIはスポンサードサーチが2020年9月30日(水)、
ディスプレイ広告が2020年12月16日(水)にサービス終了とのこと。
#コロナの影響で延びる可能性あるかも・・・?

これもGoogleと同じく旧APIでCRONエラーが出たので調べてみたら
新API正式リリースとか言われて「えっうそ」といった感じで慌てて直した。。
リリースノートはちゃんと確認しないとイカンです・・・
#っていうか運用担当者さんにメール来てただろうから教えてくれよと。。

元記事を表示

PHPインストールしたら必須!パス+version確認+php.iniの初期設定をしよう!

#PHPをインストールしよう
php5.6を公式サイトからインストール
![コメント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543413/3f0a2960-82c5-a956-3b1b-8700ab583f03.png)
ちなみに公式サイトでのインストールはntc,src以外の.zip形式をDLしました。

例:バージョン7.3の場合
1/21/2020 3:36 PM 28326466 php-7.3.14-src.zip
1/21/2020 3:36 PM 25729058 php-7.3.14-Win32-VC15-x64.zip //ここ
1/21/2020 3:36 PM 23972430 php-7.3.14-Win32-VC15-x86.zip //ここ
1/21/2020 10:49 PM 25951614 php-7.4.2-nts-Win32-vc15-x64.zip
1/21/2020 10:49 PM 241803

元記事を表示

PHP7.4 ぼくのかんがえたさいきょうのphp.ini

## ストーリー

PHPをインストールしたら必ず行う `php.ini` の設定ですが、
ネット上ではPHP5系の情報がたくさん出回っており、非推奨または削除された設定例が数多く困り果てていました。

良い感じにまとめてくれてるサイトが見つからなかったので、最強でベストプラクティスな `php.ini` 推奨設定を考えました。
異論は受け付けますので、ぜひコメントください。

## 参考設定

PHPでは、開発用と本番用の設定例を用意してくれています。
なんと素晴らしいことなんでしょうか。これをベースに設定します。

– https://github.com/php/php-src/blob/master/php.ini-development
– https://github.com/php/php-src/blob/master/php.ini-production

予め以前の記事で設定の差分を調べておきましたので、よかったらご覧ください。

– [PHP7.4 php.ini-development と php.ini-production の違い](https://qiit

元記事を表示

学習日記 #2

#インターフェイス
PHPでは多重継承が認められていないため、一度に継承できるクラスは常に1つである。複数のクラスを同時に継承することは出来ない。そこで利用するのがインターフェイスである。

“`

元記事を表示

PHP+MySQLで作る2ちゃんねる風掲示板機能を解説

# 記事概要
 タイトルの通り、PHPとMySQLを利用して、かつて2ちゃんねると呼ばれていた掲示板のようなものの作り方を解説したものです。はじめにプログラムのソースコード全体を公開します。その後に要所毎に解説を加えていきます。

# Recruit
 唐突ですが、私は現在、地方の大学に通う、農学部の4年生です。プログラマーとして現在就職活動を行なっております。居住地域の関係上、IT企業でのアルバイト等の経験はなく、1年以上前から独学でプログラミングの学習をしつつ、個人開発を続けていました。

勤務地は問いません。雇用形態はアルバイトやインターンからでも構いません。

ご連絡はTwitterのDM→[@Ren_s_off](https://twitter.com/Ren_s_off) または、こちらのメールアドレスまで(oaihgop4@yahoo.co.jp)お願いいたします。お気軽にお問い合わせください。

### Portfolio & Skills
本記事を含め、Qiitaに作成した作品についての記事を投稿していこうと考えています。今は記事が執筆中の段階ですので、随時こちらにU

元記事を表示

ElementUIでゴリ押しいいね機能

FWなしphpとvue.jsでアプリ制作中。
自分用の備忘録として記録。

ElementUIのSwitchをいいねボタンに見立て、いいね機能を実装しました。

“`php
// お気に入り登録機能
if ($axiosData[‘is_active’] === true) {
try {
$dbh = dbConnect();
//後ほどログイン機能を実装し、条件としてもう一つユーザーを一致させるようにされたい
$sql = “SELECT * FROM favorite WHERE musician_id = :musician_id”;
$data = array(“:musician_id” => “${artistData[‘id’]}”);
$stmt = queryPost($dbh, $sql, $data);
$selectResult = $stmt->fetch(PDO::FETCH_ASSOC);
if ($selectResult ===

元記事を表示

Symfony のデバッグ画面から PHPStorm を開く

Symfony のデバッグ画面では、エラーが起きた場所がすぐわかりますよね。
コールスタックもわかるので不具合の場所をすぐに特定できます。

そうしたら、IDE を開いて修正する。という段取りになりますが、それをクリック2回で済ませることができます。

公式サイトでは次の場所で説明されています。

https://symfony.com/doc/current/reference/configuration/framework.html#ide

DeepL による翻訳を載せます。

> Symfony は変数ダンプと例外メッセージで見られるファイルのパスをブラウザのなかでこれらのファイルを開くリンクに変えます。お気に入りのIDEもしくはテキストエディタでこれらのファイルを開きたい場合、このオプションを次の値のいずれかに設定します: `phpstorm`、`sublime`、`texttmate`、`macvim`、`emacs`、`atom`と`vscode`。
>

こちらにあるように、*config/packages/framework.yaml* の `framework` の

元記事を表示

OTHERカテゴリの最新記事