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

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

ESP32とMySQLとXAMPPを使ってWiFi強度(RSSI)をリアルタイムで閲覧したい

たまにネットワークが途切れるがどのネットワークが強いのか接続しないと分からないなぁ。のひとことから勉強のつもりで作ってみました。
esp32でRSSIを取得するコードがなかなかみつからなかったのでここに残します。
arduino ideのソースコードに関してはほぼ初心者でhtmlは今回の件で初めて触りました。
自分で見てもかなり見にくいのでアドバイスもいただけますと幸いです。
もちろん市販品のほうが性能もよく見やすいのは承知です。

#今回の目標
①esp32でRSSIを取得しMySQLへ蓄積。
②MySQLに蓄積されたデータをxamppを使い社内のみブラウザで閲覧できるようにする。

#①の攻略
まずソースコードは以下の通り。
環境設定をしたarduino ideへ。

“`esp32_wifi_power_complete.ino

#include
#include
#include
#include

const char ssid[] = “*******”;

元記事を表示

【PHP】画面出力する際にechoとprintどちらを使うか

PHPの初学者です。ふと疑問に思いました。

##画面出力する際にechoとprintのどちらを使うか
###結論: どちらを使っても、大した違いはありません。
(但し、厳密には異なります。)

echo
1つ以上の文字列を出力します。
返り値・・・値を返しません。
print
文字列を出力する
返り値・・・常に1を返します。

###つまり…
**echo** → 返り値が**ない**
**print** → 返り値が**ある**
でも、printで出力した場合、常に返り値が1であるため、それを使って何かをすることはありません。

##結局は、echoで出力すると良い
今までの説明で、echoもprintも違いはあれども、大した違いは無いということはわかっていただけだかと思われます。

###それでもechoを使うと良いのです!
理由はパラメーターの違いです

元記事を表示

プリザンターから自前アプリの画面を開く

# 概要
プリザンターから情報を引き継いで、自前アプリの画面を開く方法を調査。
例えば、プリザンターでログインした後に、特定のデータだけは自前アプリを作って表示するといった使い方を想定。

## 前提条件
– 環境
– OS: Windows10
– ローカル環境に構築したプリザンター
– 以下の詳細説明は省略
– プリザンター
– php

# 結論
プリザンターから自前アプリの画面を開けることを確認できた。
スクリプトでPOSTして自前アプリに画面遷移させる方式。
プリザンターの情報の引継ぎも可能。

# 詳細

## 自前アプリを準備
phpで簡単なページを作って、簡易サーバを起動しておく。
POSTで受け取った以下3つの情報を表示するだけの画面。

– userId
– userName
– loginId

↓簡単なページ

“`index.php




元記事を表示

表示件数を1ページ目だけ変えるページネーションの実装

#はじめに
表示件数が1ページ目だけ異なるページネーションの実装をまとめました。
紹介した内容以外でもっと良い方法がありましたら教えてもらえると助かります!

#解説
1ページ目に3件、2ページ目以降は10件ずつ表示する場合で解説していきます。
(件数は適当なので、各自好きな数字で調整してみて下さい)

##ページの取得件数を設定

“`
$post_per_page = $paged > 1 ? 10 : 3;
“`
ページの取得件数を設定しています。1ページ目なら**3**、2ページ目以降なら**10**を設定します。
SQLの`LIMIT句`に`$post_per_page`を設定すれば、テーブルから取得するデータ件数を指定できます。

## 取得するデータの開始位置を設定

“`
if ( $paged > 1 )
$add_args[‘offset’] = 3 + ( $paged – 2 ) * 10;
“`
2ページ目以降は1ページ目の3件+1ページごとに10件読み飛ばします。
例:2ページ目は4件目から、3ページ目は14件目からデータを取得

ここでの`

元記事を表示

最近のエラーまとめ

#最近発生したエラーの振り返り
簡単な内容のエラーではあるが、記事にしてアウトプットする。

【この記事の目的】

✅どんなエラーがあったのか記録の意味をこめて記載
✅アウトプットを継続する力をつける
✅簡単な内容から文章にし、記事を書くことに慣れる

##1.SQL が開けないエラー
SQLの実行コードを行ったが開けなかった。

“`
docker-compose app mysql -h db -u book_log -D book_log -p
“`

上記のようにコードを記述して実行した所

“`
No such command: app
“`

docker-compose と app の間の exec が抜けてしまっていた凡ミス。
今後コードを良く見返して実行するように注意する。

##2.SQLへのデータ登録エラー
SQL登録の際に以下のエラーが発生

“`
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your My

元記事を表示

Laravelでデータベース(MySQL)を作成し、接続をする。

こんにちは!
今回の内容は[前回][link]の続きになります。

まだ見てない方は是非こちらの方もご参照ください!
[LaravelでMySQLにログインするまで][link]
[link]:https://qiita.com/macky120307/items/0c8f2af3e9f84d38439c

それでは本題に入っていきます。

#開発環境
macOS Big Sur 11.0.1
composer 2.0.7
Laravel Framework 8.13.0
PHP 7.3.22
MySQL 8.0.22

#データベースを作成する
前回の続きであるMySQLにログインした状態でターミナルから

“`
mysql> show databases;
“`

と入力すると、

“`
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sys

元記事を表示

予約システムの中で毎週、n週間に1度、nヶ月に1度といった定期的な予約が出来る処理を実装する

社内で使用するサービスの改修を行う中で
定期的な予約を行う仕様があるのですが
定期的な予約の期間も仕様で定められていて
その予約も毎週1回の指定しか出来なかったので
今回、n週間にn度、nヶ月に1度といった仕様を追加しました。
より良い処理があればコメント頂けると嬉しいです!

“`php:function.php
// 月ごと開催のテンプレート
/*
*return ‘Y-m-d’
*/
function monthTemplate($end_date, $month_week, $week_count, $period) {
$start = date(“Y-m-d”);
$end = date(‘Y-m-d’, strtotime($end_date . ‘last day of this month’));
$weekly = $month_week;
$d_start = strtotime($start . ” first day of 0 month”);
$d_end = strtotime($end . ” first day of 1 month

元記事を表示

LaravelプロジェクトをGithubからクローンする時にすること

こんにちは、くりぱんです。

## この記事で実現できること
– GithubからCloneする
– GithubからLaravelプロジェクトをCloneした後の、開発環境の構築

## 開発環境
– OS:MacOS
– フレームワーク:Laravel
– バージョン管理ツール:Git
– Github

## 説明
LaraveのプロジェクトをGithubからCloneしただけだと、vendarディレクトリや.envファイルがなく、php artisan serveしてもエラーが出て、実際に開発できる環境にはありません。
今回は、Laravelのプロジェクトに参画して、GithubからCloneしたけど、どうしたらいいの!っていう人向けに、どうやって開発環境を整えるのかを説明していこうと思います。

## 実装の流れ
1. GithubからClone
1. composer install
1. .envの作成
1. データベース設定

## 実装
### GithubからClone
まずは、Laravelのプロジェクトをクローンしたい場所にターミナルで`cdコマンド`を実行して

元記事を表示

アロー関数で複数行書けるようにしたいよねっていうプルリク

PHP7.4で導入された便利機能[アロー関数](https://qiita.com/rana_kualu/items/7fbdd520a7e355599f7d)、みんな使ってますか?
私はあんまり。

“`php
$x = 1;
$fn = fn($y) => $x+$y;

$fn(1); // 2
$fn(10); // 11
“`

やはり1文しか書けないのと括弧で括れないので微妙に使い辛いんですよね。
ちょっとした確認とかにぱっと書けるのはいいのですが、1文ではあまり本格的な関数を書くことができません。
それなら普通に関数書くわってなりがちです。

ということでなんか`{}`で括って複数行書ける[プルリク](https://github.com/php/php-src/pull/6246)が来ていました。
提出者の[Nuno Maduro](https://github.com/nunomaduro)は[Laravel Zero](https://laravel-zero.com/)とか[Pest](https://pestphp.com/)とか作っていて実績がある人です。

元記事を表示

ランダム文字にてパスワード生成

こんにちは。@mashiです。

本日はパスワードをランダムにて生成するメソッドを記載いたします。
最近ランダム系ばかりアップしていますがたまたまです。

下記メソッドは初期の仮パスワードやパスワードリセット等で利用できるかと思います。
また、パスワードの1文字ずつ読み仮名が無い場合は「0」と「O」や「l」と「1」などが分かりづらい懸念があるため除外しています。

function makePassword($length) {
  $password = '';
  
  for ($i = 0; $i < $length; $i++) {
    $password .= substr(str_shuffle('23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ-_'), 0, 1);
  }

  return $password;
}

lengthの桁数のパスワードが返ってくる単純なメソッドです。
ログインアカウント管理をすることって多いと思うので、どこかで使うかもしれないための備忘録です。

元記事を表示

PHPが無料で使える!XFREEを使ってみた!

# Webhookやってみたい!

IoTなどでよく目にする、Webhookをするには、PHPなどの言語が動くサーバーが必要です(適当)そこで、PHPが無料で使える!XFREEを使ってみました!

# XFREEに登録してみる

無料レンタルサーバーの[XFREE](https://www.xfree.ne.jp/)にアクセスします。

![スクリーンショット 2020-11-16 11.26.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/6d406a7b-6071-2c8c-969e-97d1a9bd08c2.png)

ページの下の方にあるオレンジのボタンをクリック

![スクリーンショット 2020-11-16 11.26.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/109594f7-5e6a-d061-7f47-55f1f3975c98.png)

メールアドレスを登録します

元記事を表示

配列をカウントする場合 どうする? count関数

配列の要素数をカウントする場合

count関数

```

$array1 = ['apple', 'orange', 'melon', 'apple', 'pineapple'];

$count = count($array1);

出力結果:5

```
配列には5つの要素があるためカウント関数では5とカウントされて出力されています。

多次元配列をカウントする場合

それでは同じ方法で多次元配列をカウントしてみます

```
$array1 = [
['apple', 'orange', 'melon', 'apple', 'pineapple'],
['apple', 'orange', 'melon', 'apple', 'pineapple'],
['apple', 'orange', 'melon', 'apple', 'pineapple'],
];

echo count($array1);

出力結果:3
```

出力結果が「15」となるはずなのに「3」と出力されました。
配列の中の孫要素数ではなく、子要素のみをカウントしているようです。

元記事を表示

EC-CUBE4 ServiceクラスOrderHelperの拡張方法

EC-CUBE4のOrderHelper.phpの拡張する機会がありましたので、その方法をご紹介します。

# Step1. services.yamlに追記
*app/config/eccube/services.yaml*に以下のような記述を追記します。

```yaml:services.yaml
services:
...
Customize\Service\*任意のファイル名*:
decorates: Eccube\Service\OrderHelper
```

以下に自分の例を置いておきます。

```yaml:services.yaml
services:
...
Customize\Service\OrderHelper:
decorates: Eccube\Service\OrderHelper
```
# Step2. Customize/Serviceフォルダ内に拡張ファイルを用意
*app/Customize/Service/*に上記で指定したファイルの作成をする。

```php:OrderHe

元記事を表示

Laravel ページネーション 検索条件が引き継がれない

検索条件が引き継がれない問題発生

検索機能を実装して、ページネーションで次のページに遷移したとき検索条件が引き継がれない
問題が発生して解決したので記事にしました。

検索をかけて、URLを確認すると,下記のように表示されています。

category_id=1&page=1
//検索フォームで検索した結果

そして、2ページ目に遷移すると、

page=2
//ページ遷移した結果

あ、category_id=1が消えていました。
現状、bladeのページネーションのコードを確認すると下記のように設定されています。

 
{{ $projects->links() }}

下記のように変更すると、ページ遷移してもcategory_id=1&page=2
のように引き継がれました。

 
{{ $projects->appends(request()->input())->links() }}

参考記事

https://blog.dododori.com/cr

元記事を表示

[PHP]staticについて学習してみた

# はじめに
 業務でPHPを使うことが多いのですが、static変数をなんとなく使っていたり、他のメソッドとの違いがわからずずっとモヤモヤしていたので、この機会に学習しようと思いました。

 学習前は、staticをつけるとクラス内のどこからでもメソッドや変数を呼び出すことができるという認識だけです。グローバル変数と何が違う?使うメリットって?どういう場合に使う?など頭の中に?しか浮かばない状況です。

 学習用の備忘録として記事を残して行きます。間違ってるところがあれば指摘していただければと思います。

##クラスとインスタンス
 static変数を理解するにはクラスとインスタンスの概念を理解する必要があります。

> - クラスは、ある実体を生成するために定義された概念のようなもの。よく設計図に例えられる。
> - インスタンスは、クラス(設計図)を基に作られた実体のこと。

 僕は、クラスはたい焼きの型で、インスタンスはその型から作られたたい焼きと覚えています。一度設計図を定義してしまうと、再利用もでき、たい焼きの中身をあんこにしたりカスタードクリームにするなどカスタムすること

元記事を表示

LaravelでMySQLにログインするまで

今回はLaravelでMySQLにログインするまでを説明します!

#開発環境
macOS Big Sur 11.0.1
composer 2.0.7
Laravel Framework 8.13.0
PHP 7.3.22
MySQL 8.0.22

#.envの編集
.envファイルの編集をしていきます

```:.env(編集前)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
```

`DB_DATABASE`,`DB_USERNAME`,`DB_PASSWORD`をそれぞれ変更、修正します。(名前は適宜変更してください)

```:.env(編集後)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_test
DB_USERNAME=test_user
DB_PASSWORD=pass
```

今回はこのように設定しました。

#

元記事を表示

PHPでゴッドオブジェクトを作らないためにできる3つの対策

# はじめに
この記事はLaracastsという動画学習プラットフォームの講座シリーズ「[Whip Monstrous Code Into Shape](https://laracasts.com/series/whip-monstrous-code-into-shape)」の下記エピソードをまとめたものです。
「[God Object Cleanup #1: Pass-Through](https://laracasts.com/series/whip-monstrous-code-into-shape/episodes/4)」
「[God Object Cleanup #2: Traits and Socks](https://laracasts.com/series/whip-monstrous-code-into-shape/episodes/5?autoplay=true)」
「[God Object Cleanup #3: Value Objects](https://laracasts.com/series/whip-monstrous-code-into-shape/e

元記事を表示

※学習用メモ デザインパターン:Strategy編[PHP]

# Strategyパターンとはどういうものか

Strategyとは**戦略**という意味です。
このパターンはアルゴリズム(戦略)を実行する際に、どのアルゴリズムを使用するか選択できるというものとなります。

>Strategy パターンは、アプリケーションで使用されるアルゴリズムを動的に切り替える必要がある際に有用である。Strategy パターンはアルゴリズムのセットを定義する方法を提供し、これらを交換可能にすることを目的としている。Strategy パターンにより、アルゴリズムを使用者から独立したまま様々に変化させることができるようになる。(wikipediaより)

共通のインターフェースを定義することで、使用側(クライアント)はそのインターフェースに伴った処理を実行すればよいので、具体的な実装に依存することがなくなります。

## どういう時に使用可能なのか
・アプリケーションで使用されるアルゴリズムを動的に切り替える必要がある場合

[参考サイト]
https://ja.wikipedia.org/wiki/Strategy_%E3%83%91%E3%82%BF%E3

元記事を表示

【PHP】Windowsでツールを作ってみよう(準備編)

#はじめに
PHPと言えばブラウザ上で動くサーバ用のプログラミング言語というイメージがあるかと思いますが、
ローカル環境で使えるツールなども手軽に作成することが出来ます。
ここではPHPを使用してWindows環境で使えるツールを作成していきたいと思います。

#PHP開発環境構築
まずはPHPの開発環境を構築します。
XAMPPをダウンロード

下記URLへアクセスします。
https://www.apachefriends.org/jp/index.html
![qiita_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/b325f7a9-69f7-1db0-3187-92cdb0476a86.png)
ページ中段辺りの「Windows 向け XAMPP」をクリックすると、exeファイルがダウンロードできます。

2.ダウンロードしたexeファイルをダ

元記事を表示

Humhubのカスタムモジュールの作り方(静的な情報ページを表示するモジュール)

# はじめに

今回は、Humhubが拠り所としているYii2フレームワークの、いわゆるMVCモデルに従った、静的な情報ページを作成してみる。目標は、ユーザーのプロファイルページに情報を表示するモジュールを組み上げることだ。Humhubの公式ドキュメントには、この説明はない。Yii2のドキュメント[Yii2.0決定版ガイド:モジュール](https://www.yiiframework.com/doc/guide/2.0/ja/structure-modules)のページと、[前回までに解説してきた記事](https://qiita.com/tomofu74/items/7e9e002310d8b14bb612)とを合わせて以下を読んでいただきたい。

# モジュールについて

あらためてYii2.0決定版ガイドを読むと、モジュールについては次の通り記述されている。

モジュールは、モデル、ビュー、コントローラ、およびその他の支援コンポーネントから構成される自己充足的なソフトウェアのユニットです。
モジュールが アプリケーション にインストールされている場合、エンド・

元記事を表示

OTHERカテゴリの最新記事