- 1. 【第七回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー
- 2. PHP 関数定義
- 3. 【PHP】訪問者数カウンターに関わる関数についての学習
- 4. 【凡ミス①】Formタグ外に登録ボタンを配置
- 5. PHP クラス名(インスタンス)からPHPファイルパスに辿り着く方法
- 6. 転職活動管理アプリを作ろう④(Laravel に鞍替え〜ログイン実装チュートリアル)
- 7. SonarQube+WindowsでPHPソースをスキャンする
- 8. イケてないswitch-case文からおさらばするPHP生活の知恵2 -PHP8編-
- 9. PHPで\nを改行させる方法
- 10. [CakePHP] 型情報付きでエンティティを取得する
- 11. PHPでhello,Worldを表示させる
- 12. [PHP] 文字列の連結・文字列のサイズ
- 13. Raspberry Pi 3+の設定(忘備録)その4 MySQL(mariaDB)インストール
- 14. Raspberry Pi 3+の設定(忘備録)その3 新規ユーザー作成・PHPのインストール
- 15. Laravel8 コントローラの使い方
- 16. Laravel での ajax を利用したファイルアップロード
- 17. Laravel構成
- 18. 【第六回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー
- 19. php Slim3からSlim4へ移行する際のメモ
- 20. [CakePHP] 型情報付きでテーブルオブジェクトを取得する
【第七回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー
#前回までのあらすじ
[【第六回】コロナ禍だから何かできることを](https://qiita.com/STYLE-D/items/321038c8028eb9e9231f)####実装イメージ図
LINEを利用して保健所の担当者の負担を軽減するとともに、自宅療養者はいつでもつながっている安心感を持たせるためのツールイメージです。
![メイン.00_00_51_12.Still002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/cf85391e-aef8-5a59-0a1d-63d8e15412ce.jpeg)前回までで一通りの流れを説明したので、今回からはシステムについて大きく説明していきたいと思います。
まずは、データベースの構造から。##データベースの構造
![システム構成-データベース構造.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/368e9c5a-d555-3c1
PHP 関数定義
#関数定義
“`PHP:エディター
/**
整数xを受け取り、xの2乗を返す関数を作成。
**/
【PHP】訪問者数カウンターに関わる関数についての学習
###はじめに
この記事は、独学開始から約3ヶ月の実務未経験者が作成したものです。
よって、スキルは非常に未熟なため、決してこの記事の内容を鵜呑みにされないように、ご注意ください。
(未熟な私が本記事の作成に至った背景については、本文の最後にお伝えします。)
また本記事は、PHP言語の基礎理解を目的としております。
よって、Webアプリ開発におけるルーティングなどについては考慮できておりませんので、ご容赦ください。### 参考にしたサイト記事
本記事を作成するために参照したのは、PHP公式マニュアルです。
https://www.php.net/###【訪問者カウンター】のコードレビュー
まず、今回レビューしていく完成コードは以下の通りです。“`
function set_count( $file_name = “counter.txt”){//【ブロック①】
if( file_exists($file_name) ){
$count = (int)file_get_contents($file_name) + 1;
【凡ミス①】Formタグ外に登録ボタンを配置
#私の凡ミス集その①です。
Formタグ外に登録ボタンを配置した事が原因で、
登録ボタンが反応しなくなる。##環境
* PHP7
* Laravel6
* Docker##背景
* ユーザー登録画面と処理機能作成時の凡ミス
* 登録ボタンを押しても反応無し。エラーすら出ない。笑
* `RegisterController.php`を確認しても問題は見当たらない
* `Web.php`の記述は、`Auth::routes();`で認証系はバッチリ
* `register.blade.php`の記述を見ても、この時点では間違いが見当たらず
* 諦めて就寝…##解決
翌朝`register.blade.php`を再確認したところ、
Formタグ外に登録ボタンを間違って配置していたおかげで、
入力データがPOSTされていない事を確認。“`PHP:register.blade.php
PHP クラス名(インスタンス)からPHPファイルパスに辿り着く方法
クラス名(インスタンス)から実際のPHPファイルパスを探したいとき。
“`php
public function run($nazoClass)
{
$nazoClass->nazonazo();
}
“``$nazoClass` ってどこに定義されてるの?を調べます。
## 環境
IDEのコードジャンプが効かないクソ環境を想定してます。
コードジャンプできればこんなことしなくていいのに…## クラス名を調べる
“`php
var_dump(get_class($nazoClass));
die;
“`## ファイルパスを調べる
“`php
var_dump((new \ReflectionClass(get_class($nazoClass)))->getFileName());
die;
“`## 参考
– https://www.php.net/manual/ja/function.get-class.php
– https://www.php.net/manual/ja/class.reflectionclass.php
–
転職活動管理アプリを作ろう④(Laravel に鞍替え〜ログイン実装チュートリアル)
前回は [コチラ](https://qiita.com/soso555/items/89acdd45e88d0e0251f1)
# Laravel に変更します
– Java(Spring) ではなく PHP のスキルが必要になり、復習のため
– テーブル定義は前回のものから変更しません
– が、user テーブルの変更は必須なので後で更新する
– 今回の記事ではチュートリアルに即したログイン画面の実装をしていきます
– 記事の体裁は前回を踏襲# その他も変更します
– DB は PostgreSQL にします
– Laravel の開発環境構築は [コチラ](https://qiita.com/soso555/items/616307285bee984ce60f) にて解説
– docker-compose.yml 等は [github/sosobl/env-laravel](https://github.com/sosobl/env-laravel) にて# ログインを実装してみよう
– [laravel-admin](https://larave
SonarQube+WindowsでPHPソースをスキャンする
間があいてしまいましたが、[前回](https://qiita.com/beeeegle/items/b662fc97cb697a49f542) に引き続きSonarQubeで静的解析を行うための手順を書いていきたいと思います。
今回はDockerコンテナでSonarQube立ち上げて、Windows10(ホスト)にあるCakePHPプロジェクトをSonar Scannerでスキャンしてみようと思います。参考にした記事
https://qiita.com/takao-takass/items/5d54768ad0d315d3dad4# 環境
– Windows10 Pro
Windows10 へDockerインストールについては [コチラ](https://docs.docker.jp/docker-for-windows/install.html) を参照
– コンテナ作成については [コチラ](https://qiita.com/beeeegle/items/b662fc97cb697a49f542) の記事を参照
– PHP:PHP 7.4.4
– Cake:
イケてないswitch-case文からおさらばするPHP生活の知恵2 -PHP8編-
# はじめに
以前こんな記事を書いたんですよね。
https://qiita.com/layzy_glp/items/ea8fba02a1eba24a3123
でも最近PHP8を使うようになってもっとイケてる感じにかけるやん?ってわかったわけで、続編みたいな感じです。
# match式を使おう
ゆるゆる判定のswitch文を憎んでいるちょっとだけ意識高い目のぺちぱー諸氏は色んな方法でswitch文使わないで書こうと考えてると思うんですが、とうとうPHP8で我々の前に救世主が降り立ちました。 **match式** です。
https://www.php.net/manual/ja/control-structures.match.php
構文はこんな感じです。
“`php
$return_value = match (制約式) {
単一の条件式 => 返却式,
条件式1, 条件式2 => 返却式,
};
“`公式ドキュメントに書いてある大事なポイントを抜き出してきます。
> match 式は、 switch 文と似ていますが、いくつかの違いがあり
PHPで\nを改行させる方法
PHPだと文字列に\nが入っていても改行されない。
ただの空白として出力される。
## 解決方法
“`php
$summary = “abc\ndef\nghi”;//改行されない通常のコード
echo($summary);//改行されるコード
echo(nl2br($summary));“`
nl2br関数を使うと、stringに含まれるすべての改行文字(`\r\n`,`\n\r`,`\n`,`\r`) の前に`
`あるいは`
`を挿入して返してくれる。## 参考
https://www.php.net/manual/ja/function.nl2br.php
[CakePHP] 型情報付きでエンティティを取得する
前回の[型情報付きでテーブルオブジェクトを取得する](https://qiita.com/hoogee/items/f476031427a270acc2cd)の続き
### 課題
通常CakePHPではエンティティオブジェクトをQuery/ResultSetからfirst()等で取得する。
ResultSetからforeachで取るような場合は“`@var“`書くしかないして、fisrt()のときくらいはEntityInterfaceではなく具体的な型情報がほしい。###解決策
ジェネリクスを使用した回避策がこれ。
例としてByIdにしてあるけど条件は好みで適当に調整。“`
use Cake\Utility\Inflector;/**
* @template T
* @param class-string$fullEntityName 完全修飾エンティティ名
* @param int $id
* @return T of \Cake\ORM\Entity
*/
public static function getEntityById(string
PHPでhello,Worldを表示させる
#コード
“`php
echo “Hello,World”;
“`#結果
“`
Hello,World
[PHP] 文字列の連結・文字列のサイズ
#文字の連結
“`
PHPでは’+’ではなく,’.’を連結演算子として使います。
“`“`
// str型 + str型
echo ‘w’ . “ord” . PHP_EOL;
echo “飛ぶ” . “NO” . PHP_EOL;
“`“`
// 更にPHPでは、int型 . str型 = strになります。
// 連結演算子の場合、PHPはint型とfloat型を勝手にstr型に変更します。
echo “The year is : ” . 2000 . PHP_EOL;// float型 . str型 = str型。
echo “Left : ” . 20.343 . “km” . PHP_EOL;
“`#文字列のサイズ
“`
//文字列のサイズを得るために, strlen()という関数を使います。 strlen(str型)
echo strlen(“California”) . PHP_EOL;
“`“`
// 最後の文字のインデックスは2(=3 – 1)
echo “cat”[strlen(“cat”) – 1] . PHP_EOL;
Raspberry Pi 3+の設定(忘備録)その4 MySQL(mariaDB)インストール
今までRaspberry Pi 3+に16GBのmicroSDを挿してwebサーバとして運用していましたが、手狭になってきたので64GBに改めて環境構築をした時の自分の作業の忘備録です。以前導入した時とだいぶ変わっている部分が多かったので驚いたのが第一印象でした。
#前提
* このラズベリーパイは外部に公開はしません。(twitterへのポストはします)
* 普段、このRaspberry Pi 3+は午前7時から午後11時まで30分毎にcronでbotを運用しています。
* そのため一日当たりの作業時間は夜間の23時から0時までの1時間ぐらいをメンテナンス時間として作業を行う予定です。またこういう世界から遠ざかって久しいのでいろいろと拙い部分があると思います。ご指摘ください。
#関連ページ
https://qiita.com/cafe-capitola/items/b5e3e5dfdc8ca9f9a744
https://qiita.com/cafe-capitola/items/283f41793cde409a36a6
https://qiita.com/cafe-capi
Raspberry Pi 3+の設定(忘備録)その3 新規ユーザー作成・PHPのインストール
今までRaspberry Pi 3+に16GBのmicroSDを挿してwebサーバとして運用していましたが、手狭になってきたので64GBに改めて環境構築をした時の自分の作業の忘備録です。以前導入した時とだいぶ変わっている部分が多かったので驚いたのが第一印象でした。
#前提
* このラズベリーパイは外部に公開はしません。(twitterへのポストはします)
* 普段、このRaspberry Pi 3+は午前7時から午後11時まで30分毎にcronでbotを運用しています。
* そのため一日当たりの作業時間は夜間の23時から0時までの1時間ぐらいをメンテナンス時間として作業を行う予定です。またこういう世界から遠ざかって久しいのでいろいろと拙い部分があると思います。ご指摘ください。
#関連ページ
https://qiita.com/cafe-capitola/items/b5e3e5dfdc8ca9f9a744
https://qiita.com/cafe-capitola/items/283f41793cde409a36a6
https://qiita.com/cafe-capi
Laravel8 コントローラの使い方
>
Laravelにおけるコントローラクラスを理解しよう
人気のPHPフレームワークLaravelを習得しよう 第4回
https://codezine.jp/article/detail/11524こちらで勉強しててLaravel8ではハマったのでメモします。
おそらく記事はver8以前の記述ではないかと思います。#1.実装内容(エラー版)
ページに記載通りに
①Control Class“`php:\app\Http\Controllers\HelloBladeWithDataController.php
Laravel での ajax を利用したファイルアップロード
#はじめに
Laravelを使っている案件でファイルアップロードを行う機会があったので、実装方法を記します。
なぜajaxを利用したかというと、編集画面というフォームの中でファイルアップロード機能を実装したかったから(編集画面で画面遷移することなくファイルアップロードのみ行いたかったから)## HTML
“`html
@component(‘includes
Laravel構成
#はじめに
laravelにふれる機会が増えてきたため、ディレクトリ構成をメモしておきます。
##laravelのディレクトリ構成
““`
─── Laravel
├── app ・・・アプリケーションのロジック
├── bootstrap ・・・laravelフレームワークの起動コード
├── config ・・・設定ファイル
├── database ・・・MigrationファイルなどDB関連
├── public ・・・Webサーバのドキュメントルート
├── resources ・・・ビューや言語変換用ファイルなど
├── routes ・・・ルーティング用ファイル
├── storage ・・・フレームワークが使用するファイル
├── tests ・・・テストコード
└── vendor ・・・Composerでインストールしたライブラリ
““
【第六回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー
#前回までのあらすじ
[【第五回】コロナ禍だから何かできることを](https://qiita.com/STYLE-D/items/a745bd5faeb68caa1d7c)####実装イメージ図
LINEを利用して保健所の担当者の負担を軽減するとともに、自宅療養者はいつでもつながっている安心感を持たせるためのツールイメージです。
![メイン.00_00_51_12.Still002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/cf85391e-aef8-5a59-0a1d-63d8e15412ce.jpeg)##ユーザー登録の仕組みを作ろう
![システム構成-ユーザー登録.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/a834c741-8adf-06af-6c5b-a5ce167aa55a.jpeg)###今回はLIFFで表示する画面の開発部分です
####初期表示の処理
1
php Slim3からSlim4へ移行する際のメモ
以下の手順を参考に作業。
https://codezine.jp/article/detail/11904## ライブラリのバージョンアップ + 追加インストール
“`
//update
composer require slim/slim
composer require monolog/monolog//追加
composer require slim/psr7
composer require php-di/php-di“`
## 移行作業
### index.phpの修正
DIコンテナの変更のため、index.phpとdependencies.phpの設定を変更。
Slim\Factory\AppFactoryとDI\Containerを使うように変更。“`
use Slim\Factory\AppFactory;
use DI\Container;“`
以下の流れ
settingのjsonを取得。
containerを作成。
containerにsettingをsetしてdependenciesにcontainerを渡してまたcont
[CakePHP] 型情報付きでテーブルオブジェクトを取得する
PHPカンファレンス2021でPHPStormがジェネリクス対応したと聞いて。
(追記)[エンティティ版はこちら](https://qiita.com/hoogee/items/545e045e01f9b9cc2526)### 課題
通常CakePHPではテーブルオブジェクトをTableRegistry経由で取得するが、これだと型はCake\ORM\Table型としか分からない。“`
$articles = TableRegistry::getTableLocator()->get(‘Articles’); //Cake\ORM\Table型とIDEに認識される
“`実際にはメソッド等を定義している具体的なArticlesTable型として認識してほしい。
Lean controllerだFat modelだと綺麗にしたいのにこれではIDE補完が使えない。
かと言って毎度“`@var“`を書くのも間抜けすぎる。
世界中のCakePHPユーザーが同じことで困ってそうだがなぜか解決策が見つけられなかった。### 解決策
ということで、ジェネリクスを使用した回避策がこ