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

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

PHPにてPDOでMySQLに接続して、複数のSQLを実行する

1つのPHPファイル内に、INSERTとSELECTのSQLを記載する方法です。
DB接続1回で複数のSQLが実行できます。
2個目のSQLでは配列$dataの値をクリアすることがポイントです。

以下のソースコードは、ユーザーID登録実行画面の想定です。
前画面のユーザーID登録確認画面からユーザー名を受け取り、DB登録しています。

“`php





XXXX 有料のWebサービスをリリースするまでに取り組んだこと・知見をまとめました【個人開発】

# 作ったサービス
![twikeshi-ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117180/dbadeb45-61fc-48d6-3a8c-d7908b6270d8.png)

**ツイ消し職人**
**[https://twikeshi.net/](https://twikeshi.net/)**

> ツイ消し職人は大量のツイートを消したい方向けのツールです。
3,200件を超えるツイートを一括削除できます。
無料のツールなどでうまく削除できなかった方は是非ご利用ください。
既存のフォロワーをそのままに、Twitterをやり直すことができます。

# 自己紹介
こんにちは、ひろと申します。
今年の3月に会社を辞め、現在はフリーランスエンジニアとして活動しています。

メガバンクのシステムエンジニア →
広告代理店(東証一部上場企業)のWebエンジニア →
フリーランスエンジニアという経歴です。

仕事でコードを書き始めたのは前職からで、プログラミングの経験年数は2年と9ヶ月くらいで

元記事を表示

phpについて(初心者)その1

#はじめに
こちらではphpについて問合せがきた内容について書いていきたいと思います。
(適切な題名が思い浮かばなかったためその1といたします)
はじめはどう書いたらいいのかわからなく、初歩的な内容だとそもそもググっても出てこず、挫折することもあると思います。
こちらではその内容を解決する手助けができればと思います。

コードは問合せ者からいただいたものを部分的に抽出し、書き換えたものです。
自分のコードと置き換えつつ解決できればとおもいます。
またこれは1つの案にすぎません。
こんなやり方もあるんだなと参考程度になればと思います。
また、もっとスマートな方法があるとは思いますが、ご容赦いただければと思います。

#環境
CentOS
Apache
Vagrant
※こちらは筆者の環境であり問合せ者の環境ではありません

#内容

問合せ:htmlから取得した内容をフィールドに反映したいが一つの
フィールドに複数の要素を反映したい。

いただいたコード(実際はもっとながいですがこん今回は一部抜粋)

“`html:index.html

元記事を表示

VSCode でPHPをステップ実行するまでの3つの手順 (ローカル版 + VM環境版)

今日も明日も明後日も VSCode でしょう?

## ゴール

– 以下の場合でステップ実行できること
– デバッグ対象がローカル — ローカルに `PHP, Web サーバ, ソースコード, Vscode` がある場合
– デバッグ対象がVM上 — ゲストOSに `PHP, Web サーバ, ソースコード` ホストOSに `VScode` がある場合

![debug.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/a95ca797-2ef3-19ce-db50-5e9852a5cbb1.gif)

## 書かないこと
– PHPと Web サーバのインストール手順

## 準備

1. 拡張 `PHP Debug` をインストール

`shift + ctrl + x` で `php debug` を入力
AWSのELB(Elastic Load Balancing) 構成時に Auth0 認証の例外 (Invalid state) に対処する

## 経緯

1. ローカル環境 (ロードバランサー無し) ではうまく認証できる。
1. AWS上 (ロードバランサーあり) だと `Invalid state` でエラーになる。

“`/Auth0.php
throw new CoreException(‘Invalid state’);
“`

https://github.com/auth0/auth0-PHP/blob/660163b31beae4c550db68022c568b41df75d8e9/src/Auth0.php#L518

1. エラーの原因を調べる。どうやら xxx.auth0.com 側の認証処理後に `callback url` に乗せて Get パラメータで戻される `state` の値とサーバの `state` の値に相違がある…。

## 結論

EC2 > ロードバランシング > ターゲットグループ > 属性の編集 > 「維持設定 有効化: `on`」 にする。

![image.png](https://qiita-image-store.s3.ap-no

元記事を表示

無名クラス/ただのクラス/abstractクラス/finalクラス/インターフェース/トレイトを使う/使われる

# はじめに

PHPにはクラスもしくはクラスっぽいものがいろいろあります。また、これらのクラスやクラスっぽいものたちはお互いに使ったり使われたりしています。

使う/使われるの組み合わせでどれがOKでどれがNGなのか気になったのでひたすら実験するのがこの記事です。なおOK/NGはクラスやクラスっぽいものの中身の定数/プロパティ/メソッドなどにも依存すると思いますが、この記事では中身は空っぽにして表面だけに注目することにします。

# 使われる側

“`php:使われる側
// 無名クラス
$object = new class {};

// ただのクラス
class TadanoClass {}

// abstractクラス
abstract class AbstractClass {}

// finalクラス
final class FinalClass {}

// ただのインターフェース
interface TadanoInterface {}

// ただのトレイト
trait TadanoTrait {}
“`

# 使う側

“`php:使う側
// 無名クラ

元記事を表示

Guzzleを使って外部APIへPOST送信

## Guzzleとは
PHP用のHTTPクライアントライブラリです。
WEBサーバに外部APIへPOST送信などを行いたい際にGuzzleが非常に便利でした。

導入方法・簡単な使い方をまとめてみました。

## インストール方法
composerコマンドでguzzlehttp/guzzleパッケージのインストール

“`
composer require guzzlehttp/guzzle
“`

2020年5月現在、最新は6.5のようです。

“` composer.json
{
“require”: {
“guzzlehttp/guzzle”: “^6.5”
}
}
“`

## 使い方

“` app/src/Controller/Front/ApiController.php
use GuzzleHttp\Client;

public function getSession()
{
$session = $this->request->getSession(); //セッションを取得
$data = $ses

元記事を表示

Lraravelヘルパ関数の配列とオブジェクトについて

##はじめに
今回はLraravelヘルパ関数の配列とオブジェクトについてまとめます。

##連想配列の関数について(抜粋)
Arrクラスは配列を操作する時に便利に使えます。

①Arr::addメソッドは指定キー/値のペアをそのキーが存在していない場合とnullがセットされている場合に、配列に追加します。

“`php:
use Illuminate\Support\Arr;
$array = Arr::add([‘name’ => ‘skirt’], ‘price’, 5000);
// [‘name’ => ‘Desk’, ‘price’ => 5000]
$array = Arr::add([‘name’ => ‘skirt’, ‘price’ => null], ‘price’, 5000);
// [‘name’ => ‘Desk’, ‘price’ => 5000]
“`

②Arr::getメソッドは「ドット」記法で指定した値を深くネストされた配列から取得します。

“`php:
use Illuminate\Support\Arr;
$array = [‘pr

元記事を表示

【PHP】生成したインスタンスの数をカウントする方法(idの設定方法)

#【PHP】生成したインスタンスの数をカウントする方法(idの設定方法)

初期値0の変数を用意し、インスタンス生成毎に1足していく。

▼使うもの
– クラスプロパティ(変数の定義)
– コンストラクタ (インスタンス生成毎に1足す処理)
– クラスメソッド(数値の取得)

▼クラス内の記述

`$count`:インスタンスの数を入れる変数
`$count++`: \$count = $count + 1
`getCount()`: インスタンスの数を取得するメソッド
*変数名、メソッド名は任意

“`php:
class クラス名{
//クラスプロパティを定義(初期値0)
protected static $count = 0;

// コンストラクタを定義
public function __construct(){

// インスタンス生成時に1を足す
self::$count++;
}

// クラスメソッドを定義
public static function

元記事を表示

Geniusで歌詞を取ってくる方法

#はじめに
現在作成中のアプリで、歌詞を取ってくる機能を実装したいと思い
そのようなAPIがないのか探したところGeniusと言うAPIが存在することを
知りました。
ですが、日本語での解説記事に全然巡り合えなかったので、今回は
Geniusの使い方を記載させてもらえたらと思います。
以下Geniusの使い方、また詰まったところを解説します。
※デモgifです
![キータgenius.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427892/ebb4dcab-a76f-c9bc-7a60-c1ba46eac318.gif)

#詰まった点
英語のドキュメントしか巡り合えなかったため、英文を読む or Google翻訳なりで
訳して理解するかのどちらかだと思うが、自分は前者を採用して頑張って
英文を理解することにした。
難しい英文ではなかった事と、ドキュメントのAPI使用法の解説が丁寧であった
事から一応読めた。
ドキュメントを読むうちにこの英文はこういう意味では?と思ってコードを書いても
実際は全然

元記事を表示

【PHP】クラスの継承・ファイル分割の方法。オーバーライドとは?

#【PHP】クラスの継承・ファイル分割の方法。オーバーライドとは?

– [クラスの継承](#クラスの継承)
– [ファイル分割](#ファイル分割)
– [オーバーライドとは](#オーバーライドとは)

##クラスの継承
既に定義済みのクラスのプロパティやメソッドをまるごと利用して、新たにメソッドやプロパティ追加した、別のクラス名を定義する。

`class クラス名 extends 親クラス名{}`

“`php:例
//既存のProductクラスを親として、新たにPhoneクラスを定義
class Phone extends Product{

}
“`

##ファイル分割
`require_once(‘ファイル名’);`

“`php:例
//Prodcutクラスが書かれたファイルproduct.phpを読み込む
require_once(‘product.php’)
“`

<分割の用途>
・クラス毎に分割
・インスタンス生成(データ用)
・表示用

###ファイル分割の例

**▼下記6ファイルの場合**
親クラスを定義したファイル
①product.p

元記事を表示

【PHP】クラスのアクセス権・プロパティ・メソッドなど基本構文のまとめ($this, self::, parent::)

#【PHP】クラスのアクセス権・プロパティ・メソッドなど基本構文のまとめ

クラスを作成するときの書き方のメモ。

1. [クラス](#クラス)
2. [アクセス権](#アクセス権)
3. [プロパティ](#プロパティ)
4. [メソッド](#メソッド)
5. [ゲッターとセッター](#ゲッターとセッター)
6. [クラスプロパティとクラスメソッド](#クラスプロパティとクラスメソッド)
7. [インスタンス](#インスタンスの生成)
8. [コンストラクタ](#コンストラクタ)
9. [主な特殊記号($this, ::, self::, parent::)](#主な特殊記号)

##クラス
`class [クラス名] {}`
 └ クラス名は1文字目が大文字

“`php:例(クラス名 Product)
class Product{
//プロパティやメソッド
}
“`

##アクセス権
**3種類**
▼アクセス権が厳しい順

1.**private**
・定義したクラス内でのみアクセス可。

2.**protected**
・継承クラス(子クラス)でもアクセス可

元記事を表示

PHPによるEnumの実装方法がついに決着した

ときどきPHPStanの更新を一応眺めているんだけど、PHPStan 0.12.20 でいつの間にか欲しかった機能が実装されていた。
`@param` に定数が使えるようになっていた。定数だけだと一見無意味だけれど、ワイルドカードやunionが使える。

これによって、今まで様々な実装があったEnumをどうするかという問題が解決した。
単に`const`を集めたシンプルなクラスにすれば良い。

“`php

元記事を表示

パターンを網羅してstaticキーワードの挙動を理解する_クラスプロパティ/クラスメソッド編

# はじめに

PHP Manualの `static` キーワードに関するページ([日本語版](https://www.php.net/manual/ja/language.oop5.static.php), [英語版](https://www.php.net/manual/en/language.oop5.static.php))を読んで、どのようなクラスプロパティ/クラスメソッド定義がOKでどのようなのがNGなのか気になりました。

PHPにはクラスの他にもインターフェースやトレイトというクラスっぽいものもあるので、 **どこの中で** **どう定義するか** のパターンを考えて実験してみることにしました。

# どこの中で

## クラス

PHPには **ただのクラス** の他にも **abstractクラス** と **finalクラス** があります。 **abstract かつ final なクラス** はありません。

“`php:OKなクラス定義
// ただのクラス
class SomeClass {}

// abstractクラス
abstract class

元記事を表示

pythonで画像を送信、phpで保存する

色々わr・・・面白いことに使えそうだからメモしとく

“`python:pic_post.py
import requests
#こちら送信側→ローカルに置く
with open(“img.jpg”, “rb”) as f:#画像をopen(読み込みみたいな?)する
url=’http://hogehoge.jp/pic_save.php’#送り先
r = requests.post(url, f.read())#送信
“`
“`php:pic_save.php

“`
とりあえずは上のコードで動くはず
f.read()の意味は何だよとかは追記するかも
拡張子が違う場合(png、gif)やら画像を選びたい場合やらとかも本当は考えたいところ
###参考
[PHP]画像をダウ

元記事を表示

substring、substrメソッドの使い方

## 概要
文字列の一部を指定箇所を切り出す機能としてSubstringメソッドがある。
その他にもcharAtメソッドもある。
指定位置から始める文字列を任意長さを切り出す。

## Javaでの使い方
“`java
public String substring(int Index)
public String substring(int startIndex, int endIndex)
“`

JavaのsubStringメソッドは上記2点の使い方がある。
使い方は下記のような使い方がある。

“`java
String s1 = “Hello World”;
// o World
s1.subString(4)
// O World
s1.subString(4, 11);
“`

# PHPでの使い方
“` php
string substr (String $string, int $start [,int $length ] )
“`
string
入力文字列。最低1文字以上を指定する必要がある。

start
startが正の場合は、返却される文字列はS

元記事を表示

Laravelでログ出力を行う

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

# Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpに下記を追記
`use Illuminate\Support\Facades\Log;`

(2) /sample/app/Http/Controllers/SampleController.phpにlogメソッドを追記

“`
public function log(Request $request)
{
Log::emergency(‘ログサンプル’, [‘memo’ => ‘sample1’]);
Log::a

元記事を表示

Laravel 既存テーブルにカラムを追加する時のマイグレーションファイルの作成方法

# 目的

– 実施方法を毎回検索しているので簡単にまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| 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 |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |

# 実施例

– 下記に

元記事を表示

怠惰な大学生が楽単サイト作ったら2万アクセスきた

初投稿です。

#はじめに
大学生が求めがちな楽単。サークルや部活に所属しているとその情報は手に入れやすいですが、そういったところに所属していない人にはあまりその情報は回ってこないものです。さらに今年の新入生には例のあのウイルスの影響で授業の情報が入ってきません。この状況では学生によって不利が生まれると思ったので授業のクチコミサイトを作りました。
実際はプログラミング初心者が最初に作りがちな典型的な掲示板です。しかし、思いの外需要があり、 ~~いや、本当は需要あるとわかってた。~~ 2万アクセスを得ました。
これを観ている方の中で大学生の方がおりましたらコピペして作ってみてはいかがでしょうか。

#リンク
https://ishiike.matrix.jp

#開発環境
macOS Catalina (10.15.4)
Visual Studio Code (1.35.1)
PHP (7.3.16)

#サイトの構成
![ishiike.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415239/483

元記事を表示

MacでのLaravel6の環境構築でエラーが起こった件

# Laravelのインストールコマンドでエラーが起こった
Composerの準備を[こちらの記事](https://qiita.com/Kohei1996/items/c6f493315b09bb4621e5)の手順で完了した後、
下記のLaravelのインストールをコマンドを実行。

“`
$ composer global require laravel/installer
“`
すると、下記のエラーが発生しました。

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

Problem 1
– laravel/installer v3.0.0 requires ext-zip * -> it is missing from your system. Install or enable PHP’s zip extension.
– laravel/installer v3.0.1 requires ext-zip * -> it is missing

元記事を表示

OTHERカテゴリの最新記事