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

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

【簡単3 steps】Vue.jsサンプルをLaravelアプリに実装する方法

![Vue.jsサンプルをLaravelアプリに実装する方法.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954103/773b4b6d-b45d-c20d-18eb-7d2ed9369e8f.jpeg)

今回の記事は下記の方におすすめです!

:::note info
Laravelの基礎はOK
Vue.jsの基礎はOK
でもLaravelでVue.jsサンプルを使う方法が不明
:::

自分でゴリゴリコードを書くのもありですが、最初のうちは「Vue.js」のサンプルをLaravelのサイトに埋め込むところから始めるのはありかもしれません。

今回は、「Vue.js」のサンプルが多数紹介されている海外のサイトを紹介しつつ、サンプルを実際の自分のプロジェクトに埋め込む方法について共有いたします!

今回の記事が参考になれば幸いです:relaxed:
なお、間違いやご指摘ありましたら、コメント下さると幸いです。

# 実行環境
– PHP 7.4
– Laravel 6.2
– V

元記事を表示

PHP よく使うString関数まとめ

# 本記事の内容
本記事では、String関数、マルチバイト文字列関数である、

* explode (文字列を指定した文字列により分割する)
* substr (文字列の一部分を返す)
* nl2br (改行文字の前に HTML の改行タグを挿入する)
* str_replace (検索文字列に一致したすべての文字列を置換する)
* strpos (文字列内の部分文字列が最初に現れる場所を見つける, 文字列が存在するかの確認)

の使い方をざっくりまとめています。
さらに詳しく知りたいという方は、記事最後に公式ドキュメントのページを一覧で記載しています。

一つの関数あたり、

* 関数の詳細(公式リファレンスに沿った具体的なもの)
* ざっくりした説明

の二部構成です。
 使い方に関しては、ざっくりした説明だけを見ていただければ理解できる程の情報量を簡潔にまとめているので、急いでいる方は説明だけを見ていただければ十分だと思います。
(誤解を招く表現等ありましたらコメントでお願いします)

## explode関数

explode関数
元記事を表示

ファイルアップロードツールを作ってみた

#はじめに
PHPとJavaScriptを使ってブラウザ上で動作するシンプルなファイルアップロードツールを作りました。
Chromeブラウザで動作します。

#ツールイメージ
ツールのイメージはこんな感じになります。
![01_img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/75e52bd1-a1e0-c4d6-9725-e41cbffb55ec.png)
①テキストを保存する領域です。テキストエリアになっているので複数行保存出来ます。
②上部のテキストの内容を保存するボタンです。
③アップロードされているファイル一覧が表示される領域です。
ファイルがアップロードされている場合は、ファイル名・ダウンロードボタン・削除ボタンが表示されます。
④ファイルアップロード領域です。ここにファイルをドラッグ&ドロップするとファイルがアップロードされます。

#ファイル構成
ツールのファイル構成はこのようになっています。
![02_img.png](https://qiita-ima

元記事を表示

The PutObject operation requires non-empty parameterのエラー対応について

下記の記事を参考にs3へ画像を保存する途中でThe PutObject operation requires non-empty parameterのエラーが出たのでその対処法です。

https://qiita.com/nakasan773/items/9436e9b1c60831120aba

##参考にした記事

https://stackoverflow.com/questions/64751415/the-putobject-operation-requires-non-empty-parameter

[Laravel] .env ファイルの更新内容が反映されない場合の対処方法

##確認手順

https://qiita.com/nakasan773/items/9436e9b1c60831120aba

上記記事を参考にcomposerで必要なものを入れたりバケットを作ったり.envを書き換えます。

その後、

“`php
php artisan config:cache
もしくは
php artisan cache:clea

元記事を表示

画面遷移せずにformを送信する方法

##画面遷移せずにformを送信する方法

formを送信する際にaction属性を自身に返す場合、入力した内容はそのまま表示させておきたいですよね。

“`html




“`
上記の例はaction属性が空なので自身に遷移します。
phpのみで入力した値を保持したい場合はinputのvalue属性にPOSTで渡ってきた情報を出力してやる必要があります。

“`php
alert(‘保存しました’)“;
}
?>

最近物忘れのひどい私が書いた、二重登録防止のためにMySQLでロックを使ったPHPのサンプルコード

## 結論

1. InnoDBのテーブル
2. トランザクションを開始する
3. SELECT … FOR UPDATEをする
4. 新規追加もしくは更新のクエリを実行する
5. トランザクションを終了する

## 概要
1件だけの登録、1件のだけの更新時の処理用
同時登録、同時更新によりデータの整合性が取れなくなる事を防ぐ事が目的
行ロックなのかテーブルロックになってしまうかなどは、考えていない

## サンプル用テーブル

idとnoだけのテーブル。InnoDBである事。

“`SQL
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT,
no int NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;

— 1件入れておく
INSERT INTO test (no) VALUES (1);
“`

## 新規作成

仕様はnoは重複してはならない(ユニークインデックスを貼れば済むが)とします。なので挿入するnoが存在していない事をチェックしてから挿入します。「伝票番号など

元記事を表示

Laravel8でバリデーションを日本語化

#はじめに#
 Laravelはログイン機能を簡単に作ることが出来ますが、デフォルトではバリデーションメッセージが英語になっています。日本語に変更することもできますので備忘録として残していきます。

#日本語化の手順#
 Laravelのメッセージファイルはresources/lang/enにあります。enなので英語ですね。ファイルの中身を見てみるとこんな感じです。

“`resources/lang/en/validation.php

元記事を表示

WordPress上に、PHPで簡単なウェブアプリを作成する

「WordPress上にウェブアプリを作れないかな~」と考えていたところ、PHPで簡単に作れそうだったので挑戦してみました。

##対象者

– HTML・CSS・PHPの基礎を理解している人
– WordPressがどのような仕組みで動いているのか、ざっくりと理解できている人
– WordPressで、すでにブログを運営している人
– WordPressを使って、ウェブアプリを作ってみたい人

なお、今回の記事を書くにあたり、こちらの本でPHPとWordPressの仕組みを勉強しました。

– WordPressユーザーのためのPHP入門 はじめから、ていねいに。

「PHP以外の言語でコードを書きたい!」という人もいるかもしれませんが、WordPressがPHPをベースとして作成されているため、ある程度の技術が必要になります。
(私は技術力がないので、あきらめました。)

##成果物の解説

成果物は[こちら](https://corgi-komugi.com/php-test/)になります。

|[EC2サーバー構築の概要【備忘録】

#はじめに
AWSの仮想サーバー構築用クラウドサービス「EC2」を用いて、PHPサイトを立ち上げた時に調べたことのまとめ。
全体の流れ・用語等についての記事であるため、具体的な手順については割愛しています。

#目次
– 全体の流れ
– 項目別の詳細
– 用語
– 参考文献

#全体の流れ
1. AWSにサインアップ
1. EC2インスタンスを作成
1. インスタンスをSSH接続で操作する
1. Apache・PHP・MariaDBをインストール
1. テスト用PHPファイルをアップロード
1. Elastic IPを割り当て
1. 各種設定を変更

#項目別の詳細
####1. AWSにサインアップ・2. EC2インスタンスを作成
 手順通りに進めるだけなので割愛。
####3. インスタンスをSSH接続で操作する
 作成したインスタンスを操作する際には、端末からSSH接続をする。
 SSHクライアントとして、今回はTera Termを使用する。
 接続画面ではホストにパブリックDNS、ユーザーにec2-user、認証方式にSSHを選択し、インスタンス作成時に取得した秘密鍵を指定する

元記事を表示

REST API のレスポンス速度を改善するために行なった設計の上で大切なこと

# はじめに
社内のプロジェクトで、大量のデータをjsonで返すAPIを実装した際に、レスポンス速度が遅くなりすぎるという課題が発生したことがありました。
この、課題を解決する過程で、開発者がWebサービスを実装する上で意識した方が良い点をいくつか学んだので記事にまとめたいと思います。

# for 分のネストを浅くする

まず、以下のソースコードを見てください。

“`php:api.php

$all_datas = $this->model->find($query);

foreach($all_datas as $data){
foreach($data[‘data’] as $value_type => $data_by_type){
foreach($data_by_type as $timestamp => $val){
$response_array[$timestamp] = $val;
}
}
}

“`

このようにfor分のネストが深くなると、OSのメモリ上にデータを格納した状態が長く続き、サーバーに大きな負荷がかかって

元記事を表示

はじめてのDocker compose

## はじめに

以下のような構成で記事を執筆していますが、
どこからでも読めるような構成になっています。

1. [ゼロから始めるDocker入門](https://qiita.com/suzu12/items/315fba934de11af826bd)
1. [はじめてのDockerfile](https://qiita.com/suzu12/items/c4bc47c0df6ec9b9290b)
1. [はじめてのDocker compose](https://qiita.com/suzu12/items/4ec2cc8c1a7c23aa112b) ←今回はここ

## 対象読者

– `Docker` の使用に慣れてきた方
– `docker-compose.yml` でなにをしているのか知りたい方

## 目次

– [はじめに](#はじめに)

– [対象読者](#対象読者)

– [目次](#目次)

– [Docker Composeとは](#docker-composeとは)

– [Docker compose](#docker-compose)

– [デ

元記事を表示

Eclipse(Xampp)のワークスペースをhtdocs以外にしようとして苦労した話

### はじめに

Eclipse(Xampp)でも大抵の場合、htdocsにファイルを置いておけばローカルではたいてい動く。
ここまでは下記の記事でできた。

https://qiita.com/Atsulabo/items/1d6cd3326267a02d3bf2

だが、仕事の都合上、htdocs以外の別の場所におかないといけなくなった。
そんなわけで、上の記事で保留した「別の場所に設定できない問題」というのを
解決せざるを得なくなった。

というわけであれこれ試行錯誤した結果をまとめたい。

### 1. ファイルを置きたい場所に移動させて、パスを取得する

まずは今までhtdocsで作ったファイル群を置きたい場所に移動させておく。
ここでは仮に「C:¥MyPHPTool¥」に移動させるとする。

### 2. Eclipseを開き、最初のワークスペースを決めるところで、上記のパスを入れる

元のhtdocsの場合、C:¥¥xampp¥htdocsとか、
Eclipse入れてたら C:¥¥Eclipse¥xmapp¥htdocs だけど、
置きたい場所の C:¥¥MyPHPT

元記事を表示

【Laravel】Non-static method <メソッド名> should not be called staticallyの解決方法

#事象

以下のようにメソッドを呼び出したときに発生します。

“`php
class Item extends Model
{
public function getItems()
{
// 取得処理
“`

“`php
class ItemController extends Controller
{
public function index(Request $request)
{
$items = Item::getItems();

// Error
> Non-static method App\Models\Item::getItems() should not be called statically
“`

#原因

エラーメッセージを訳すと***「非静的メソッド`App\Models\Item::getItems()`は静的に呼び出されるべきではありません」***になります。

原因はそのままで`getItems`は非静的メソッドなので、静的な呼び出しを行なってはならない、ということになります

元記事を表示

SESAME3 Web APIの開閉操作をPHPで実装してみた

[candyhouse公式のドキュメント](https://doc.candyhouse.co/ja/SesameAPI)ではPHPでの実装方法が見つからなくて色々苦心したので記事にまとめてみました

使用環境
PHP 7.3.22

使用ライブラリ
[cryptlib/cmac](https://packagist.org/packages/cryptlib/cmac) dev-master(2021/09/11時点)

#手順
まずはAPI使用に必要な情報をSESAMEのシェア用QR(オーナー権限)から取得
公式だと手順が面倒くさかったけれど、便利なツールがあったのでこれを使用

https://sesame-qr-reader.vercel.app/

使うのは以下の項目

– UUID
– Secret Key

次に、[SESAMEのデベロッパーサイト](https://dash.candyhouse.co/)にログインしてAPI_KEYを取得

# 実装

AES-CMAC をPHPで実装してある記事が見つからなかったので、試行錯誤の結果です
基本的には公式ドキュメントの

元記事を表示

PHP seleniumを使ってみよう

# はじめに
– PHPで、**`selenium`**を使用したい人
– 自動化処理に興味がある方

## seleniumとは
> Selenium は、 Webアプリケーションをテストするためのポータブルフレームワークである。 Selenium は、テストスクリプト言語(Selenium IDE)を学ぶ必要なしに、機能テストを作成するための再生ツールを提供する。

– [出典: フリー百科事典『ウィキペディア(Wikipedia)』](https://ja.wikipedia.org/wiki/Selenium_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2))

## ChromeDriverをインストール
**`ChromeDriver`**は、**Chromeを動かすために必要なドライバー**になります。
> [こちらからダウンロード](https://getcomposer.org/)
macの場合はHomeBrewでインストール可能
コマンド: brew install chromedriver

元記事を表示

microCMSを使い超爆速でCMS機能を実装してみる【PHP/JS】

久しぶりです。最近JAMStackとかが流行ってる流れで**ヘッドレスCMS**が使われつつあるので実際に使って爆速でCMS機能を実装してみたので実装例とかを紹介したいと思います。
初心者はもちろん非エンジニアでもわかるレベルで解説・紹介します。

**デモ:https://0115765.com/samples/php/MicroCMS_List.php**

# microCMSとは
microCMSは**純国産のヘッドレスCMS**です。

https://microcms.io

ヘッドレスCMSとは表示する部分を排除したCMS(コンテンツ管理システム)のことです。
通常WordPressなどの一般的なCMSはフロントエンドとバックエンドのセットで構築されます。WordPressはテーマなどを使って見える部分を整備しますよね。
一方ヘッドレスCMSは表示する部分(=フロントエンド)を提供せず自分で見える部分を作るので**自由度が格段に増します**。(公式サイトより)
![公式サイトより](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

TwitterからWordPressへ投稿するPHPコード

#TwitterからWordPressへ投稿するPHPコード

***制作した経緯***
ググっても無かったので…。

***前提条件***
1.一時間毎にcronで実行ファイルを叩く
2.WordPressへ投稿したいツイートには任意のキーワードを設定する
3.同じような内容のツイート内容は投稿しない
4.TwitterOAuthとWordPressは適所にインストールされていること
5.毎日、ツイートしていること

https://github.com/taoka-toshiaki/Twitter_WordPress

“`php

元記事を表示

無料の勉強教材一覧 laravel編

現在絶賛勉強中のPHPフレームワークlaravelが無料で学べるサイトを集めました。(随時更新していきます)

##環境構築編
MAMPを使ってlaravel6の環境構築がローカル上でできます

cloud9を使ってlaravel6の環境構築ができます

cloud9を使ってlaravel8の環境構築ができます

##基本的なCRUD機能実装

##参考サイト

元記事を表示

laravelでgmailを使ってのメール送信ができない(laravel Expected response code 250 but got code “530”)

下記の記事を参考にgmailのサービスを使ってlaravelからパスワードリセットのメール等を送れるように試みました。

環境
IDE AWS cloud9
laravel6

設定は完了したものの所々でエラーに捕まったのでシェアします

https://qiita.com/hiro5963/items/df062ab19e8ceba4573f

#エラー
## 前提のcache等のクリア

.envファイルを書き換えたら必ずcacheをクリアしましょう。クリアしないとenvファイルの内容が反映されません。

“`
php artisan cache:clear
“`

下記の記事を保存しておきましょう
https://qiita.com/Ping/items/10ada8d069e13d729701

## config/mail.phpの確認

envファイルの内容はconfigファイルを経由して反映されます。
envファイルの内容によって変わります

“`php:.env
MAIL_DRIVER=smtp
“`

の場合には

“`php:config

元記事を表示

PHPで1年分の月を出力する。

##PHPで一年分の月を出力する。

データベースに月毎でデータを保存しているってことはまあまああることだと思います。
一年単位で一括更新したいデータがあったのですが、テーブルが別れているのでめんどくさいのでfor文で一気に更新してしまいます。

for文といえば

“`php
for($i = 0; $i < 12; $i++){ //なんか処理 } ``` こんな感じだと思うんですけど、今回は ```php $to_month = date("Ym"); //1年後 $limit_month = date("Ym", strtotime(date("Ymd")." +1 year")); for($m = $to_month; $m <= $limit_month; $m = date("Ym", strtotime($m."01 +1 month"))){ echo "

“;
    var_dump($m);
    echo “

“;
}

// string(6) “202109”
// string(6) “202110”
// st

元記事を表示

OTHERカテゴリの最新記事