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

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

チェックボックスとデータベースを一体化させる方法

ググってもチェックボックスのやり方は書いてあっても、
データベースの連携の記事がなかったため、自分が学習した内容をまとめます。
軽い気持ちで読んでいただければと思います。

▼基本フローは下記になります。
1.編集ボタンを押す
2.チェックボックスをチェックする
3.完了ボタンを押す
4.チェックボックスにチェックがついている。

1.編集ボタンを押す
2.チェックボックスをなくす
3.完了ボタンを押す
4.チェックボックスのチェックがなくなっている

使用シート
reg_list.php(一覧画面)
reg_edit.php(編集画面)
reg_update.php(編集実行画面)

reg_list.php(一覧画面)
“`php

—***—

元記事を表示

$stmt = $pdo->queryと$stmt = $pdo->prepareの違いについて

queryとprepareについて勉強したため、

皆さんに共有する。

$stmt = $pdo->queryは一番簡単な方法
$stmt = $pdo->prepareは「 query 」に手間をかけてバリデーションをして手間を行う方法。

queryを使う場合
“`php
try {
// データを取得するSQL
//tasksテーブルのid,titleの取得の準備し、表示させる。
$stmt = $pdo->query(“SELECT id, title FROM tasks”);

全ての行をまとめて取り出し、「$titless」に格納する
$titless = $stmt->fetchAll(PDO::FETCH_ASSOC);

} catch(PDOException $e) {
// エラーメッセージを出力
echo $e->getMessage();
} finally {

// データベースの接続解除
$pdo = null;
}

“`

確認する
prepare

元記事を表示

Drupalでよく使うDrushコマンド一覧

# Drush コマンド一覧

### 設定ファイルエクスポート

“`bash
vendor/bin/drush config:export
“`

### 設定ファイルインポート

“`bash
vendor/bin/drush config:import
“`

### Drushコマンド一覧表示

“`bash
vendor/bin/drush
“`

Drush コマンドのリストが表示されるので、コマンド分からなくなったら利用

### キャッシュクリア

“`bash
vendor/bin/drush cr
“`

### 翻訳ファイルの更新があるかチェック

“`bash
vendor/bin/drush locale:check
“`

### 翻訳ファイルの更新

“`bash
vendor/bin/drush locale:update
“`

### 翻訳ファイルのインポート

“`bash
vendor/bin/drush locale:import
“`

### モジュール有効化コマンド

“`bash
vendor/bin/d

元記事を表示

プログラミングを始める時におすすめの無料サイト

プログラミングを勉強する人が最近増えています。
今の時代、フリーランスのシステムエンジニアが人気だからですね。収入を上げるため、フリーランス化する人が多いです。

そのため、プログラミングスクールが最近流行っています。
が、プログラミングを始める時は、独学からスタートすることをオススメしています。
というのも、**「プログラミングは自分で調べて身に付けることが重要だから」** です。

実際、システムエンジニアの業務の中では、”自分で調べて解決する”能力が求められます。
分からないエラーと出会った時に、解決できる力がある人とない人では全然違います。
望むなら、解決できる力を身に付けておきたいですよね。独学はその練習です。

そんなわけで今回は、プログラミングを始める人・始めたい人におすすめの無料サイトを紹介します。
無料でもある程度のところまでは勉強できますし、そこから就職・転職・フリーランスも全然アリです。

## プログラミングが勉強できるオススメの無料サイト

### ドットインストール

3分間の動画で勉強できる無料サービスです。
**全然無料の動画を見ているだけでも、プログラ

元記事を表示

個人開発したWebサービスをMENTAでレビューしてもらった

MENTAという`プログラミングに関する質問`や`ソースコードレビュー`をプロのメンターにお願いできるサービスを利用させていただきました。

https://menta.work/

今回は個人開発したWebサービスの`デザイン、UI/UX`面をレビューしていただいたので、内容を記載していきます。
皆さんが開発しているWebサービスの参考になれば幸いです。

https://qiita.com/ryouya3948/items/1fc06116a211f3bc62f7

# レビュー内容
画面ごとにレビュ―内容を絡めて、修正前後の画像を貼っていきます。
### トップ画面
#### Before
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/b695d668-c591-e63d-3aa1-3f624a249bfe.png)
#### After
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

OAuth 2.0 Server PHPを使ってサーバー認証をやってみる。

# 1.はじめに

 GoogleHome経由でサーバーに何か働きかけをする手段としてIFTTTを通してウェブフックを呼び出す方法などありますが、外部サービスということやつい先日もAPIの変更とかでそれまで使っていたアプレットが使えなくなって再定義が必要になる、といったこともありました。できればサーバーそのものが家電の一種として登録できたらいいのにという思わなくもありません。リモートスピーカーとかサウンドバーのようなデバイスとして見せかけられたらGoogleHomeの使い勝手も少し良くなるような気がします。
 ただ、[Google Assistantのドキュメント](https://developers.google.com/assistant/smarthome/overview “スマートホーム概要”)など読んでいると、何が無くともまずは **OAuth2.0サーバー** を用意することが必要とのこと。

 言語はいろいろありますが、個人的にイージーに使えるということもあり、PHPで探してみると、[OAuth 2.0 Server PHP](https://bshaffer.git

元記事を表示

Drupalの便利なモジュールの紹介

# Drupal 便利なモジュール

## **Examples for Developers**

### 機能説明

Drupalの開発のサンプルが記載されています。

例:`examples/module/field_example`であればFieldType, FieldFormatter, FieldWidgetを使った実装例が記載されています。

### 使い方

1. exampleをインストールする
1. `composer require ‘drupal/examples:^3.0’`
2. モジュールを有効化
3. 使いたいサンプルのモジュールを有効化する
1. 利用できるモジュールは`examples/module/`配下にある

Link:[https://www.drupal.org/project/examples](https://www.drupal.org/project/examples)

## JSON:API

### 機能説明

Drupalで作成されるJsonを確認することができる

### 使い方

1. jso

元記事を表示

MAMPでPHPのバージョンが古いと怒られた場合の対処方法

自分の環境 ⇨ Mac + MAMP

【表題の件についての解決方法】

下記、参考になるサイトに従い、PHPのバージョンを7.4.21(2022/10/16現在選べるMAMP上のPHPのバージョン)と指定する。

[参考]https://gray-code.com/php/specify-php-version-in-composer/

【具体的説明】

Laravel-simple-memo(Laravelプロジェクト)直下にcomposer.jsonファイルがある。

当該ファイルを書き換えて、設定を変更することでエラーを解消する。

以下、composer.jsonの変更箇所になります。

“config”: {
“optimize-autoloader”: true,
“preferred-install”: “dist”,
“sort-packages”: true,
“platform”: {
“php”: “7.4.21”
}
変更後、保存した上でコマンド

元記事を表示

Laravel Socialiteでのリダイレクト先を動的に設定する

Socialiteで特定のGoogleアカウントで可能なログイン機能を実装したのですが、それとは別にGoogleアカウントの登録機能を実装する必要があり、少しつまづいたのでメモ。

config/services.phpに記述するプロバイダのリダイレクト先URLは一つしかできないので、どうやって複数のリダイレクト先を設定するか悩みました。

## 環境
Laravel Framework 9.35.1

## 解決策
まずGoogle Cloud Platformで新たなリダイレクト先URLを登録。
“`
# config/services.php

‘google’ => [
‘client_id’ => env(‘GOOGLE_CLIENT_ID’),
‘client_secret’ => env(‘GOOGLE_CLIENT_SECRET’),
‘redirect’ => env(‘GOOGLE_CALLBACK_URL’),
]
“`
services.phpには使用する頻度の高いリダイレクト先URLを設定しておく。

“`
# RegisterA

元記事を表示

【個人開発】個人開発用テストサービス

開発したWebサービスを、他ユーザーがテストできるサービスをリリースしました。

![testapp実装完了(Qiita).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/9e95e69b-4ac7-7756-bde7-44d3145fa45c.gif)

# URL

https://www.testapp.jp/index.php

# 目的
開発したWebサービスをリリース後、ユーザーの方に利用していただくと見つかる不具合があります。

第3者が触ったときに見つかるバグは、意外と開発者本人は気づかないものが多いです。

リリースする前にそういった問題を解決するためにテストサービスを開発しました。

# サービス概要
テストしてもらいたいWebサービスを投稿します。

![testapp投稿(Qiita).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/dfd487b9-c569-550b-2

元記事を表示

「PATHを通す」ってなんなん?!

## 調査の背景

現在、Laravelで開発を行なっており、マイグレーションを実行した際に

“`zsh
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”. You are running 7.3.29-to-be-removed-in-future-macOS.
“`

上記エラーが発生し、PHPのバージョンを7.3.29→8.1.11にアップデートしました。

“`zsh
brew install php@8.1 && brew link –force php@8.1
“`

アップデートが完了すると、

“`zsh
php -v
WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not

元記事を表示

htmlspecialchars で文字数を求める

PHP ではマルチバイトの文字数を求めるのに `mb_strlen` が使われますが、本体にもマルチバイトを扱う機能があります。次のコードで htmlspecialchars で文字数を求めてみます。

### コード

“`php
$str = ‘あいうえお’;
var_dump(5 === str_len($str, ‘UTF-8’));

function str_len(string $str, string $encoding = ‘UTF-8’): int
{
$str = str_scrub($str, $encoding);
$size = strlen($str);

$length = 0;
$char = ”;

for ($i = 0; $i < $size; ++$i) { $char .= $str[$i]; if (str_valid_encoding($char, $encoding)) { ++$length; $char

元記事を表示

【cakephp】 [->eq]こういう時のやつ

調べていて、パッと出てこなかったのでまとめます。

こういう時のやつ↓
“`php
$query = $articles->find()
->where(function (QueryExpression $exp) {
return $exp
->eq(‘author_id’, 2)
->eq(‘published’, true)
->notEq(‘spam’, true)
->gt(‘view_count’, 10);
});
“`
ソース引用:https://book.cakephp.org/3/ja/orm/query-builder.html

## 一覧

演算子 | 意味 | 英語 | 一般的な記号
–|–|–|–
eq | 等しい | equal | =, ==
notEq | 等しくない | not equal | <>, !=
gt | より大きい | greater than | >
ge | 以上 | greater tha

元記事を表示

Laravelでfaviconが画面からなかなか消えてくれなかった話

favicon消すだけなのに思いのほか苦労してしまった話。

## 背景
参画しているPJTにて、「現在アプリに設定しているfaviconを消してほしい」と頼まれた。
「どうせ1行削除するだけだろ~」とか思っていたらハマってしまったので書き残す。

## 環境
Laravel: v9.19.0
動確ブラウザはchrome,Edgeを利用

## やったこと

①app.blade.phpのfavicon指定箇所をコメントアウト
“`php:app.blade.php
{{– favicon –}}
{{– –}}
“`
→リロードしたものの、「あれ、消えない,,,」

②ブラウザのキャッシュを疑い、以下を実施
* 別ブラウザで画面表示
* ブラウザ設定から「キャッシュされた画像とファイル」を削除
* 「ハード再読み込み」実施
* 「キャッシュ削除とハード再読み込み」実施
* 以下に配置されている、ブラウザのキャッシュファイルたちを削除

元記事を表示

laravel-dompdfとFPDI+TCPDFで作成したPDFを1つのPDFにする

# 概要
Laravelで、laravel-dompdfで作成したPDFとFPDI+TCPDFで作成したPDFを結合させて
1つのPDFを作成する必要がありました。
(PDF内の順番は1.laravel-dompdf、2.FPDI+TCPDF)
その際に行った方法を備忘録として残しておきます。

※以下、各コード内のファイル名は、本投稿上の適当な名称です。
# laravel-dompdf
“`php
use PDF;
// laravel-dompdfでPDFを作成する
$domPdf = PDF::loadView(‘generate_pdf’);
“`
※laravel-dompdfでの詳細なPDFの作成方法は以下を参考に。
[LaravelでPDFを出力する方法(laravel-dompdfを使う)](https://codelikes.com/laravel-dompdf/)

# FPDI+TCPDF
“`php
use setasign\Fpdi\TcpdfFpdi;
// FPDI+TCPDFでPDFを作成する
$fpdiTcpdfPdf = new TcpdfF

元記事を表示

php artisan env:***で.envファイルを暗号化 / 復号

趣味でも仕事でも一人で開発してることが多いから個人的な恩恵は少なめなのが悲しい。ざんねん。

## 前提
laravelの最新バージョンに`php artisan env:***`というコマンドが追加されていた。
追加されたのは[v9.32.0](https://github.com/laravel/framework/releases/tag/v9.32.0)([New env:encrypt and env:decrypt commands](https://github.com/laravel/framework/pull/44034))

“`shell
$ php artisan list
Laravel Framework 9.35.1
~~~

env
env:decrypt Decrypt an environment file
env:encrypt Encrypt an environment file

~~~
“`

.envファイルを暗号化/復号出来るコマンドで、.envのデータをバージョン管理に含めたり

元記事を表示

【PSR-4 Autoload】第二回 仕組みを理解したうえでautoloadを実装

## この記事でできるようになること :muscle:
【第一回】 autoloadの概要を理解
**【第二回】 仕組みを理解したうえでautoloadを実装**
【第三回】 composerからautoloadを利用
## 前回の復習 :thought_balloon:
![Autoload (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744039/135c664f-56ef-07e3-01ad-6fe62ac67007.png)

## アジェンダ :memo:
– 名前空間がどのような役割を果たすか理解
– PSR-4で使用される用語を理解
– [Class Example](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md/#user-content-class-example)を理解/実装

 今回の最終目標は[**Class Example**]

元記事を表示

【PSR-4 Autoload】第一回 autoloadの概要を理解

## この記事でできるようになること :muscle:
**【第一回】 autoloadの概要を理解**
【第二回】 仕組みを理解したうえでautoloadを実装
【第三回】 composerからautoloadを利用

## そもそも… :thinking:
### Autoloadとは :mag_right:
自動的にファイルを読み込んでくれる機能のこと。
必要なファイルを全て`require`するのではなく、autoloadクラスを実装したphpファイルを一回読み込むだけでその都度必要なファイルを読み込んでくれる。

### PSRとは :mag_right:
PHP Standard Recommendationの略。
PHP-FIGが定めたPHPコーディング規約。

https://www.php-fig.org/

### PSR-4とは :mag_right:
PSRの中でもAuotloadについての仕様がまとめられている。
命名規則や言葉の意味などについて書かれており、**Autoloadを理解する上で必ず読まなければならない。** が、最初に読んでも驚く

元記事を表示

laravel controller内でbladeファイルのoldの値を使う方法メモ

# やりたいこと
laravelのbladeファイルで使ってるold機能の値をcontrollerで取得する


# 方法
コントローラー内で \old(”) を使う
例)hogeController
“`
public function create()
{
$name = \old(‘name’);
}
“`

oldはファサードのため、バックシュラッシュ(\)を使って値を取得できるようだった
なお、初期表示などでoldに値が入っていない場合はnullが代入されていた


# 参考文献
– [[laravel]controller内でoldを取得したい – Teratail](https://teratail.com/questions/227082)
– [Laravelでフォームの値を保持する(oldヘルパーについて)](https://codelikes.com/laravel-old/)
– [Laravel5.1入門 その10 はじめてのFacade – Perl日記]

元記事を表示

【Laravel】JSONでintegerがstringで返ってしまう

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況
Userの“`role“`をenumを使って返していたのでてっきり“`integer“`で返ると思っていたら、JSONの返り値が文字列になっていた。
“`php
namespace App\Enums;

enum UserRole: int
{
case Owner = 1;
case Admin = 2;
case Member = 3;
}
“`

“`
{
“id”: 1,
“name”: “山田太郎”,
“avatar”: “https://www.gravatar.com/avatar/xxxxxxxxx”,
“role”: “2”
}
“`

原因はmigrationファイルでroleを“`string“`にしており、JSONではDBから引っ張ってきているため文字列で返っていた。

## 解決法

Userモデルに下記を追記する。

“`app/Models/User.php
protected $casts = [
‘r

元記事を表示

OTHERカテゴリの最新記事