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

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

Declaration of <クラス名>::<メソッド名> should be compatible with <クラス名>::<メソッド名>

# 状況
phpunitのsetUp()メソッドを設定した時に、タイトルのエラーが発生

# エラー内容と対象方法
setUp()メソッドは親クラスのメソッドをオーバーライドしているのですが、
オーバーライド元とオーバーライド先でメソッドの引数または戻り値が異なる場合にエラーが発生します。

この場合、親クラスの戻り値が以下の通りvoidとなっているため、
オーバーライド先でも同様の指定が必要となります。

“`php:TestCase.php
/**
* Setup the test environment.
*
* @return void
*/
protected function setUp(): void
{
if (! $this->app) {
$this->refreshApplication();
}

$this->setUpTraits();

foreach ($this->afterApplicationCreatedCallbacks as $callback) {
$callback();

元記事を表示

WordPressと静的コンテンツを共存させる方法

WordPressのトップにあるindex.phpを確認。
初期設定通りであれば、
wp-blog-header.php
を参照するように設定されているはず。

“`index.php
ドキュメントルート/wp/index.php
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . ‘/wp/wp-blog-header.php’ );
“`

wordpressが読み込む順番は、
index.php→wp-blog-header.php

なので、index.phpと同じ階層に表示させたいコンテンツを配置することで、
1. 静的コンテンツを配置したディレクトリ
2. wp-blog-header.php
の順番に参照します。

ここで1つ問題なになるのが、
Wordpressと静的コンテンツのディレクトリが重複してしまう場合です。

例)
WordpressのURL
https://sample.com/test/
静的コンテンツとして表示させたいURL
https:

元記事を表示

PHPで配列の中身を文字列型として取り出したい時

#はじめに
業務でAPI連携をする際に遭遇した内容となります。
備忘録として残そうと思って今回、書きました。

#例えばこんな時に使う(実際に自分が遭遇した状況)

APIでリクエストを送った際、返ってきたレスポンスの中でidやnumberなどを配列として保存して、後で別のAPIのリクエストを送る際に使用する時・・・

#サンプルコード

“`php5:test.php

public function main() {
$idList = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ’10’]
foreach ($idList as $arrayId) {
createRequest($arrayid);
}
}

public function createRequest($arrayid) {
$strId = (int)$arrayId[0];
$response = $this->httpClient->request(
‘GET’, //method
sprintf(‘/users/%s’, $st

元記事を表示

laravelでカバー画像も表示できるブックレビューアプリを作った。※自分の学習用です

#何を作った?
PHP、laravelの勉強として、カバー画像も表示できるブックレビューアプリを作りました。
まずpaizaラーニングを参考に掲示板アプリを作り、そこにGoogleBooksAPIsでマンガのカバー画像を引っ張ってきます。デプロイはまだです(挑戦したがうまくいきませんでした)。

基本的な機能はよくある掲示板アプリと同様です。なのでAPIを利用した画像の取得・利用について書きます。

#レビューを投稿するまでの流れ(ログイン済みと想定)
①まず検索窓にマンガのタイトルを書きます。
②候補のカバー画像がいくつか出てきます。この画像はボタンになっていて、クリックして選択できます。
③画像を選択したらタイトルと本文を記入し、投稿して完成です。いいね!ボタンもあります。
僕は左側に画像、右にタイトルと本文を配置しました。

#GoogleBooksAPIsの導入
下記を参考にしました。
[書籍検索APIはGoogleBooksAPIsがオススメ【導入も楽ちんです】](https://manablog.org/google-books-apis/)

[書籍検索APIであるGo

元記事を表示

PHP-【Laravel】 Target class [App\Http\Controllers\Auth\ConfirmPasswordController] does not exist.エラー対策

Laravelのプロジェクトは6.0 から6.2にアップグレードした後、php artisan route:listを実行した時に起きた問題です。

##現象
Laravel6.0 から6.2にアップグレードしてからphp artisan route:listをすると、下図のように**Target class [App\Http\Controllers\Auth\ConfirmPasswordController] does not exist.**エラーが出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529234/9c3d9d3b-ce29-3aa5-f144-6f46e1e14c69.png)

##原因
laravelプロジェクトのApp\Http\Controllers\AuthフォルダーにConfirmPasswordController.phpがないのは直接原因です。6.0->6.2の差分で分かったのは、laravel6.0のコアアプリケーションにこのファイルがな

元記事を表示

wordpress PHP バージョン変更に伴うちょっとしたエラー

内容はタイトルのとおりです。ちょっとしたエラーと書いていますが、全然ちょっとしていませんでした。むしろ、致命的でした。危なかった。。。

# 経緯
案件で、すでにあるwordpress公開サイトをデザイン・システムをほぼ変えずに別ドメインとして、公開というものがありました。(同一のお客さんだが、あくまで別サイトとして公開)
ほぼ変わらないので、DB・テーマファイルを一式、複製したら終わるだろうと思っていましたが油断。。。

# 開発環境
サーバー かごやネット
php 7.2.12
MySQL 5.6.36
WordPress: 5.3.2

# 発生したエラー
確認したものから順番に列挙します。

## プラグインの更新、削除、新規追加の際にエラーが出る。
例えば、アップデートの際には ` {“success”:true,”data”:{“update”:”plugin” … }` と表示される。一見アップデートできていないように思うが、リロードしたところ、新しいバージョンに変わっていた。お客さんの方で、プラグインは触らない箇所なので、後で解決しよう~~(まあいいか)~~

元記事を表示

Boost.Asioで名前解決(非同期)

[前回の続き]
(https://qiita.com/tako3pro/items/08961c5dc7a8d398b859)

#使用したツールなど
前の記事を参照

#やりたかったこと
1. 「非同期」にする。
2. 「POST形式」で送信する。
3. 「クラス」にする。

#コード
クライアント:

“`main.cpp
#include
#include
#include
#include
#include
#include
#include “json11.hpp”

using namespace std;
namespace asio = boost::asio;
using asio::ip::tcp;

class Client {
asio::io_service& io_service_;
tcp::socket socket_;
tcp::resolver

元記事を表示

オブジェクト指向を語ろうと思ったけど、一旦クラスの話をしようwithアンパンマン

どうも、やまうちです。

先日(てか昨日読み終わった)この本を読みました。
「オブジェクト指向でなぜつくるのか 第2版」

[オブジェクト指向でなぜつくるのか](https://www.amazon.co.jp/dp/B00ISP0QB2/ref=cm_sw_r_tw_dp_U_x_CsehEbFS7DVXM)

有名な本なので読んだことがある方も多いとは思いますが、半分素人の弱弱エンジニアの僕はこの本からオブジェクト指向とは?を学ぶべく、3連休を利用して読んだんですね。
ということで、自分の理解度をチェックしつつアウトプットで知識の定着をはかりつつ、よくわからん!って方のためになるようわかりやすくアウトプットしていく感じの記事です。
ちなみに今回触れている内容はオブジェクト指向っていうよりも、クラスの話になります。

なんか違くね?
って思ったら最大限優しく教えてくださいm(_ _)m
最大限です。
※大事なことなので2回言いました

## クラスに備わる3つの仕組み
– まとめる
– 隠す
– たくさん作る

って書いてました!!!!
なのでこれに沿って書いていきます。

###

元記事を表示

GASで翻訳API作成してLaravelで叩くまで

# はじめに

この記事では

GASで英語から日本語に翻訳するAPIを作成しLaravelで結果を取得までします

## GASを作成

こちらの記事を参考に作成しました
[3 分で作る無料の翻訳 API with Google Apps Script](https://qiita.com/tanabee/items/c79c5c28ba0537112922)

## controllerを作成

一部抜粋

“` TransController.php
public function index() {

$transApiUrl = ‘公開したAPIのURL’;
$transSource = ‘en’; // 翻訳前の言語
$transTarget = ‘ja’; // 翻訳語の言語
$transText = “Hello”; // 翻訳する文字

$transApiUrl .= ‘?text=’ . urlencode($transText);
$trans

元記事を表示

数字を指定の桁数に整える

# 記法

“`php5:書式
str_pad(対象文字列,埋める桁数,埋める文字列,埋める辺)
“`

第一引数:0埋めの対象となる文字列
第二引数:埋める桁数
第三引数:埋める文字
第四引数:左を埋める場合はSTR_PAD_LEFT、右を埋める場合はSTR_PAD_RIGHT、両側を埋める場合はSTR_PAD_BOTHを指定します。実際にコードを書くとなると下記のようになります。

# サンプルコード
“`php5:Sample.php

$CountOfFiles=100;
for($i=1;$i<$CountOfFiles;$i++){ echo str_pad($i, 2, 0, STR_PAD_LEFT); } ``` # 結果 ```php5:結果 $ sample.php 001 002 003 004 ... ``` # 参考 http://wp.tech-style.info/archives/582

元記事を表示

Goutteで空港情報を取得してみる

# はじめに

友達との作品制作で空港の情報が欲しくなった時にスクレイピングしてみようと思い

下記のサイトさんがたくさんの情報が載っていたのでスクレイピングしようと思いました。
https://www.airlineguide.jp/airport-codes/

PHPやLaravelは初心者でいろんな方の記事を参考にさせていただきました

[Laravel/Goutteで映画タイトルをクローリングする](https://qiita.com/vivid_colors/items/feecf2af1dd646f7395a)

[Goutte(PHP)でスクレイピングしてみる](https://qiita.com/fksk/items/6807d5de07f93114087c)

利用するものとしては友人がLaravelを使用していたのでそれに合わせました

※スクレイピングについては色々あると思うので自己責任でお願いします。

## スクレイピングとは

>スクレイピングはサーバサイドのプログラミング言語を使って外部サーバへアクセスし、そのコンテンツから自分たちの欲しい情報を引き出す

元記事を表示

Dockerでnginx等を使う時はまずLinuxの知識をだな……(戒め)

## DockerとかVagrantでnginx等を使う時はまずLinuxの知識をだな……(戒め)

#1. 背景
フロント学んできて、そろそろバックエンドもまなんでみようと思い、せっかくなので流行りのDokcerを使用しPHPでサーバーに画像をアップロードするコードを書いた。
そしてハマった

#2. 環境

・windows10

元記事を表示

LaravelのJWT認証でいろいろカスタマイズ

仕事で考えないといけなくなったので、いろいろ試してみました。

# 作るもの
以下の条件を満たす認証機能を作ります。

– JWT 認証
– ユーザテーブルが、Laravel 標準のテーブル定義で **ない**
– デフォルトの `users` テーブルは使いません
– パスワードのハッシュ化が Laravel 標準の方法で **ない**
– デフォルトの `bcrypt` ではなく `SHA256` を使います

なお、Laravel 標準が使える環境ならば、そうしたほうが良いと思います。
この記事は **やむを得ず** そうせざるを得ない場合のために書かれています。

# 前提
## バージョン
– Laravel 6.9.0
– PHP 7.4.1
– MariaDB 10.3.11

## 扱わないこと
以下については、この記事では触れません。

– Laravel 標準の認証機能について
– [JWT](https://ja.wikipedia.org/wiki/JSON_Web_Token) そのものについて
– JWT 認証の是非について

# 手順
## 非標準

元記事を表示

横文字が飛び交う世界で無知無知の新卒が一人前のSEになるまで ー1年目ー

#要約
– 「IT?何それ?」な新卒社員がIT部署に配属されてからの軌跡
– 一年を通しての振り返り
– 何を見て何を学び、何が出来るようになったのかのまとめ
– 参考になるかは貴方次第

#はじめに
こんにちは。タスク管理で予想時間以内にタスクが終わった試しがない、あやしいブロッコリーです。

という紹介文が馴れ馴れしいほどのQiita初心者です。

2019年、皆様はどんな年でしたでしょうか。
個人的な感想としては、題にもある通り新卒ということで沢山の苦悩・苦難があった年でした。
例えば、先輩社員や上司の方々がどこぞのクラウドサービス炎上でドタバタする中、
私はTwitterで現状を追うことしかできなかったり。。
あの時の自分の何もできない感といったらまあもう味わいたくないですね。
アマゾン森林の大火災なんて笑えません全く。

そんな2019年でしたが、今回は新年明けての挨拶も兼ねて、
昨年の振り返り、今年の抱負、やりたいこと等々色々考えてみました。
脳内の大掃除なくして2020年は迎えられませんからね。

#現在携わっているプロダクト
Webサイトにおける様々なログを収集・分析し

元記事を表示

【初学者向け】セキュリティ対策入門①〜XSS編〜

# 前提

## 確認環境

以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜]()

## 本シリーズの目的

以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜]()

## 本記事の目標

**XSS(クロスサイトスクリプティング)の概要、原因、対策について理解すること**です。

## 本記事を読み進める上での必要事項

以下の内容を終えていることです。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜]()

# 概要

## XSS(クロスサイトスクリプティング)とは

**不正なスクリプトを混入・実行させること**です。掲示板などエンドユーザからの入力値をWebページに表示させる機能を持ったWebアプリケーション全般で行われる可能性があります。

これだけだとわかりにくいと思いますので実際に見てみましょう。

## 実際に体験してみよう

本シリーズで使うコンテナを起動して
http://localhost:8080/xss/bad.php?name=J
にアクセスしてみましょう。

『こんにちは、Jさん』とブラウザに表示され

元記事を表示

今更だけどCSSって何ぞや あとPHPってHTMLの中に書けるのに.phpってどういう意味だってばよ?


##という方に向けてざっくりCSSとPHPを解説して行きたいと思います。

まあCSSがCascading Style Sheetsの略で、表示に関する記述って言うのは誰でも分かると思うんですが、じゃあCSSの中身はどういう仕組みになってるの?という問いに対して答えられる人ってIT人口の何割なんだろうねって気がします。

HTMLに関してもPHP使うなら必修だと思うけど、pとかaとかimgとか、主要なタグさえ覚えればheadの中身とか理解しなくても使えてしまったりするので「今更HTMLとかなぁ~」って思ってる人こそ勉強してみると楽しいと思う。

あと分かってるとは思うけど、仕組みと言いつつ低レイヤーの話はしない(出来ない)のでCSガチ勢の方は帰ってどうぞ。

##CSSの役割とは何ぞや

これに関しては長々と解説するより実例を見てもらった方が早いでしょう。

![Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541457/a02c8cd

元記事を表示

必要コマンド

● pwd
現在のフォルダ(ディレクトリ)を調べるためのコマンド「Print Working Directory」の略。

● mkdir
フォルダを作るためのコマンド「Make Directory」の略。

$ mkdir 作成したディレクトリ名

● cd
ディレクトリ間を移動するためのコマンド「Change Directory」の略。

$ cd 移動したいディレクトリ名

また

$ cd ..
1つ上(親)のディレクトリに戻ることができる。

また

$ cd ~
または
$ cd
ホームディレクトリに移動が可能。そのターミナルを実行しているユーザーの「ホームディレクトリ」を意味している。

●Is
ディレクトリの中身を表示するためのコマンドで「LiSt directory contents」の略。

$ mkdir space
$ Is
で、mkdir作成したspaceというディレクトリが、現在のディレクトリに存在することを確認できる。

元記事を表示

WordPressを更新したら500エラーになった

WordPressのアップデートをいつも管理画面の「WordPress の更新」から気楽にしていました。先日WordPressのバージョンを5.3.2にアップデートしたところ500エラーが出ました。

WordPressの管理画面にはアクセスできるものの、管理画面の投稿一覧にアクセスすると500エラーになり、「ホストに接続できません」と表示されます。
サイトのページも真っ白です。。。

### 環境
– KUSANAGI for AWS
– WordPress 5.3.2(最新化済み)
– PHP 5.6

### エラー内容を確認する
エラー内容を確認するため、WordPressをデバッグモードにします。
`wp-config.php` を開きます。KUSANAGIのデフォルトでは `/home/kusanagi/kusanagi_html/DocumentRoot` にファイルがありました。

“`
define(‘WP_DEBUG’, false);
“`

その行を次のように変更します。

“`
define(‘WP_DEBUG’, true);
“`

nginxの

元記事を表示

Laravel の環境構築でつまづいた

# はじめに
macOSでの話です。

[Laravel公式のインストールサイト(日本語訳)](https://readouble.com/laravel/5.7/ja/installation.html)通りに進んでいたが、

“`
composer global require laravel/installer
“`
の入力が上手くいかず、下記のエラーが出て数時間つまづいたので誰かの役に立ったらと思い書きます。

“`
Your requirements could not be resolved to an installable set of packages.

Problem 1

Installation request for laravel/installer ^2.1 -> satisfiable by laravel/installer[v2.1.0].
laravel/installer v2.1.0 requires ext-zip * -> the requested PHP extension zip is missing from your s

元記事を表示

PHPを勉強したのでフィボナッチ数列を求めるコードを書いてみた

初投稿です。

プログラミング学習を始めてある程度時間が経って簡易的なCRUD機能アプリは作ってみたのですが、四則演算等アルゴリズム的なのはあまり使用しなかったので腕試しの意味も込めやってみました。

#フィボナッチ数列

フィボナッチ数列とは下記の数列のように今の項と前項の和が次の項となるような数列です。

1 1 2 3 5 8 13 21 34 55 89 144 ・・・・N

第一項の値1と第二項の値1の和が第三項の値2になっています。
以降これの繰り返しを行う数列のことです。

式で表すと

第N項の値 + 第N+1項の値 = 第N+2項の値

こんな感じです。

中学入試や大学入試でよく見るやつです。
(漸化式懐かしい)

#実際にPHPで書いてみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354333/5f8fb2d3-3b08-c635-c8be-14c387154f57.png)

#書いてみて

色々復習になった。
こういった問題でアウトップ

元記事を表示

OTHERカテゴリの最新記事