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

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

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を使い5分で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

元記事を表示

PHPの業務経験6ヶ月で初めてOSSにContributeした話

注) これはポエムです。

## 背景

エンジニアとして働き始めてから、OSSへのContributionに強いあこがれがあったが

– ヨワヨワエンジニアの自分がOSSのコードなんていじれるのだろうか
– そもそもOSSのコードに自分が介入する余地なんてないんじゃないか

なんて考えていた。
しかしやってみたら心配は杞憂だった。
OSSにContributionしたいと思っている人の参考になればと、自分がやったことをメモ。

## 筆者のスペック (当時)

– エンジニア歴 1年半
– PHP, Laravelの業務経験 半年

## Contributeまでの軌跡

### 業務でとあるOSSを使う

LaravelにはExcelファイルをインポート、エクスポートできる[Laravel Excel](https://laravel-excel.com/)というライブラリがある。
業務で開発中のプロジェクトでこれを使う機会があったのだが、これが結構よくできたライブラリで[^1]、とても簡単にExcelエクスポート機能等を実装できる。[^2]

### キャッチアップを兼ねてサンプ

元記事を表示

Laravel8でAdminLTE3を使用する方法

# 概要

この記事では、管理画面として有名なテンプレート`AdminLTE3`をLaravel8で使用する方法について記述していきます。
前提として、既にLaravelのセットアップは完了している事としています。

# Laravel-AdminLTEをインストールする

下記の通り`composer`コマンドを使ってLaravel-AdminLTEをインストールします。

“`
$ composer require jeroennoten/laravel-adminlte
“`

インストールが完了したら下記のコマンドで`adminlte`コマンドが使えるようになっている事を確認します。

“`
$ php artisan list
“`

上記のコマンドを実施した結果、下記のようなリストが表示されます。

“`
adminlte
adminlte:install Install all the required files for AdminLTE, and additional resources
adminlte:plugins Man

元記事を表示

Laravel JetStream PWリセット時にメールアドレス入力を除外したい。

JetStreamでPWリセットする際にメールアドレスを入力せずに
変更するのどうしたらいいのかな?と思いました。

## パッと考えたこと
– メール送信時にCookie を設定して、PW変更画面で読み取って表示
– 送信するトークンにメールアドレスを追加してControllerなどでうまく処理する。

## 結論
送信されるリセットメールのurlパラメータ見てませんでした。

`http://localhost:8080/reset-password/{トークン}?email=ogaki.kana%40example.net`

`auth/reset-password.blade.php`で使用されている
input typeを変更するだけでした。

“` php
Laravel date型カラムの取り扱いに注意

## エラーの詳細
例えば`User`モデルに`date`型の`birthday`というカラムがあるとする。

この`birthday`を

“`php
{{ $user->birthday->format(‘Y/m/d’) }}
{{ $user->birthday->format(‘Y年m月d日’) }}
“`

上記のようにフォーマットを変更して表示する場合、`User`モデルに

“`php
protected $dates = [
‘birthday’
];
“`

とすると**`birthday`は`Carbon`インスタンスとなるため、フォーマットを変更できる。**

しかし、フォーマットを変更して表示している場合`birthday`が`null`だと下記のようなエラーになる。

“`
Call to a member function format() on null
(nullなのにメンバー関数format()を呼び出しています)
“`

エラーを回避するために下記のようなNull合体演算子を書いてみたが、それでも`null`の場合、同じエラーになる

元記事を表示

【laravel】Auth::loginでログインできたと思ったらできていなかった問題

とある機能の実装をしていまして、

`Auth::login`メソッドを使ったログインが必要になったのですが、、、、

ハマってしまった。。。

ありのままに起こったことを話そうと思います。

# 現象

ユーザのオブジェクトを入力してログイン認証を進めてくれる`Auth::login`メソッド。

期待通り、ログインが成功して、期待通り、ログイン後の画面遷移が行われるはずだったのですが….

まさかの 401 unauthorized エラー

# 原因

どうやらログインそのものはできていたものの、セッションが保持されていなかったようです。

なので、セッションを保持させる解決策が必要。。。。

# 解決方法

`app/Http/Kernel.php`の設定をいじる必要があったようです。

設定ファイル内の`$middleware`に`\Illuminate\Session\Middleware\StartSession::class`を追加

“`php:app/Http/Kernel.php
protected $middleware = [
…,

元記事を表示

ほけん相談SNS『ほけんとーく』を作ってみた

#はじめに

このサービスをチームメンバーと一緒に開発しました。
これからサービスを作りたいという人に少しでも参考になれば幸いです。

###自己紹介
現在24歳、都内の文系大学を卒業して、金融企業に務めております。
2020年8月にプログラミングスクールに通い始め、プログラミングの基本を勉強いたしました。

#「ほけんとーく」とは
保険の悩み共有WEBアプリ「ほけんとーく」です。

保険に対する悩みを投稿することで、様々なユーザーからアドバイスをいただき解決のヒントとなるWEBアプリです。また、悩み投稿とコメントを共有することで、他のユーザーの悩み解決のヒントとなります。多くの人に見られたくない悩みは2人だけのチャット機能で相談することができます。

このアプリが目指すことは、ユーザーが保険の悩みを共有して①解決のヒントや、②安心感、③考えるきっかけ 以上のようなものを得ることです。
(直接保険営業マンとマッチングすることや、WEB上で保険の成立を目的とはしない)
![og.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

結構使うけどすぐ忘れる関数の使い方

##結構使うけどすぐ忘れる関数の使い方

phpの関数で使用頻度高いけど毎回ググってる関数の使い方を記憶に定着させるためにメモ。

#str_replace
特定の文字列を置換。

“`php
$zip = “123-4567”;
$zip = str_replace(“-“, “”, $zip);
echo $zip;

//123456
“`
郵便番号や電話番号などをDBに保存する際に”-”を除いた文字列で保存したい場合など。

私は悪い使い方として
古いプログラムを改修する際に誰が作ったか知らない俺俺関数で吐き出されたhtmlの一部だけ変更したい場合使ったりする。

“`php
function OreOreFunction(){
return “

俺俺俺俺だよ!

“;
}

$text = OreOreFunction();//俺俺関数
$change_text = str_replace(“だよ!”, “ですよ!”, $text);
echo $change_text;

//

俺俺俺俺ですよ!

“`

idをつけたい時などは

“`p

元記事を表示

Windows 10 のWSL2でDocker CEを使ってHello PHP

# 概要

Windows 10でWSL2環境を用意する。
WSL2環境でDocker CEを使用して、PHPの(開発用)動作環境を作る。

# 動機

近い将来にDocker Desktopが個人・中小企業を除いて有料化される[^1]ので、一応、代替策を検討しておく。

[^1]: Docker Desktopが有料化へ、ただし250人未満かつ年間売り上げ1000万ドル(約11億円)以下の組織や個人やオープンソースプロジェクトでは引き続き無料で利用可能( https://www.publickey1.jp/blog/21/docker_desktop250100011.html )(公式 https://www.docker.com/blog/updating-product-subscriptions/ )

– 下記の方法で正しくライセンス問題を回避できているかどうかは保証しません。
– 運営元の経営のためにも、支払える方は支払うことをお勧めします。

# 動作環境
– Windows 10
– WSL2環境

# 基本的なWSL操作

後述の手順で使うかもしれない。

###

元記事を表示

laravel ドット記法を使用して配列やオブジェクトから値を取得する

# 目的

– laravelのヘルパーメソッドである`date_get()`を使い、ドット記法で配列やオブジェクトから値を取得する方法をまとめる

# 方法

– 下記のように記載することで配列やオブジェクトから任意の値を取得する事ができる。

“`php
data_get(配列やオブジェクト, ドット記法での値の指定);
“`

# 参考文献

– [https://readouble.com/laravel/6.x/ja/helpers.html#method-data-get](https://readouble.com/laravel/6.x/ja/helpers.html#method-data-get)

元記事を表示

PHP if文でfalseと判定される値

# 目的

– PHPのif文でfalseと判定される値をまとめる

# if文の式でfalseと判定される値

1. 下記のPHP公式ドキュメントのif文の記載に下記のように記載されている。
– [https://www.php.net/manual/ja/control-structures.if.php](https://www.php.net/manual/ja/control-structures.if.php)
1. 「どのような値が false と評価されるかについては論理値への変換 を参照してください。」とあるのでリンク先を見てみる。
– [https://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting](https://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting)
1. ドキュメントによると下記の値がif文でfalseとして扱

元記事を表示

【PHP】Class名を変数に入れてインスタンス化or静的に呼び出す

## 概要
変数にClass名を入れて、別クラスでインスタンス化 or 静的に呼び出したい

– 共通で使用するクラス
– 適当なクラス
– 基底クラス(今回は登場しません)
– バリデーションクラス(今回は登場しませんが、staticなvalidate()という関数を持っています。)
の4つが前提として存在します。

## 詰まった時のコード
“`php
適当なクラス extends 共通クラス{
// 省略
// リポジトリのクラス名を返す
protected function getValidationClassName(): string
{
return ‘TestClassName’;
}
// 省略
}
“`

“`php
共通クラス extends 基底クラス{
// 省略
$validate_class_name = $this->getValidationClassName();
$error_validate = $validate_class_name::validate();
va

元記事を表示

OTHERカテゴリの最新記事