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

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

【Laravel】AccessorでEloquent属性値を変換して処理を共通化する

# 概要

`Eloquent Model` から取得したIDをハッシュ化する処理を`Accessor`を利用して行ってみましたので紹介します

> アクセサは、Eloquentの属性値にアクセスしたときに、その値を変換するものです。アクセサを定義するには、モデルにget{Attribute}Attributeメソッドを作成します。

https://laravel.com/docs/8.x/eloquent-mutators#attribute-casting

# `Accessor` の定義

– `{カラムのアッパーキャメルケース}Attribute` の形式でメソッドを命名する
– 今回は`hash_id`にハッシュ化したIDを格納しますので`HashId`としています

“`php:User.php
/**
* Attributeにhash_id属性を生成するアクセサ
  * @return string
*/
public function getHashIdAttribute()
{
return urlencode(Hash::make($this

元記事を表示

【作業記録】環境構築

環境構築
昨日Laravelのポートにアクセスできたのにできなくなってしまった。

環境を再構築して試そうとしてみたが
docker-compose exec web bash
を記入してもコンテナに移動できなかった。

一度作業手順(テキスト参照)に再度構築を試します

元記事を表示

【laravel】configフォルダを使用したプルダウンの作り方

##【概要】
プルダウンを作成する際viewをスッキリさせたかったので、configフォルダにプルダウンで表示したい項目を記述し、viewに引っ張ってくる方法で作成しました!

完成図はこんな感じになります。
(今回は都道府県のプルダウンを作成します!)

![プルダウン検索.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1046420/dd465466-2a4d-0aae-2bce-8be08ded9255.png)

![プルダウン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1046420/2bb253d4-d505-0c47-6519-4117e62592ce.png)

##①プロジェクトのconfigフォルダにPrefectures.phpを作成
configフォルダにPrefectures.phpを作成し、47都道府県を連想配列で記述します。

“`php:Prefectures.php

元記事を表示

textareaの入力内容をページの更新後も保持しておく方法

## 解決したいこと
`textarea`に入力された値を、ページの更新後も保持しておきたい。

## 解決方法
入力内容が代入された変数を、`textarea`タグの**あいだに**埋め込む。

“`php

//

“`

なぜこの位置に書くか。
原因は、`textarea`にvalue属性がないからだ。

## 詳細
### 対象者
* プログラミング初学者
* php初学者

###経緯
フォームボタンを押したときに、入力不備があればエラーメッセージを出す仕様にしている。
(*コードは簡略化)

“`php

// 空白箇所のエラー例

* 内容を入力してください

“`

ボタンを押すとページが再表示されるので、入力内容は消えてしまう。

しかし、正しく入力さ

元記事を表示

Laravelで画像をリサイズして表示する

#経緯

https://qiita.com/Hiroto0706/items/9cb509cff284783e2550

こちらの記事では、laravelで画像を表示できるようにしました。
しかし、画像によっては大きく表示されてしまっていたので、画像のサイズを変更して表示したい!と思い画像をリサイズして表示することに挑戦!?

###やりたいこと
画像をリサイズして表示する

#環境
・M1 Mac
・Laravel Framework 8.82.0
・PHP 8.1.2
・docker

#やったこと
###①composerを使ってintervention/imageをインストール。
以下のコマンドを使って、`Intervention Image`という外部のライブラリをインストールする。

“`terminal
composer require intervention/image
“`

###②設定を行う
インストールできたら、configフォルダの中にある`app.php`で設定を行う!

“`php:app.phpのproviders
‘providers’

元記事を表示

PHPでお問い合わせフォームを作成する①

PHPを使用してお問い合わせフォームを作成する方法を解説します。バリデーションなどの一部機能はJavaScriptで実装します。
本稿は2部構成となっております。第一部ではとりあえずバリデーションは無視して、実際にフォームに入力した内容をメール送信できるところまで進めます。

# 完成イメージ図

![お問い合わせフォーム イメージ図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485055/281729cc-681f-164a-8a19-b9e05b232434.jpeg)

# 入力画面

“`html:index.php

入力画面

メッセージにつきましては、下記のフォームよりご入力お願いいたします。

元記事を表示

REST Client(VS Code)で名刺画像を送信し、郵便番号を取得する方法。

#はじめに
今回は、VScode上で名刺画像ファイルをHTTPリクエスト経由で送信して、VS code上で名刺画像ファイルの情報を取得する機会があったので、自分用の忘備録の代わりに、その手順をご紹介致します。

環境
Laravel6.2
Mac OS
VS code

#REST Clientの簡単なご説明

まず、REST ClientとはVS Code上でレスポンスを確認できるというVS codeの拡張ツールです。
例えば今回でいうと画像ファイルを送信しているので、その画像ファイルの具体的な情報はデバッグ等を実行してブラウザでで確認するのが通常のケースだと思いますが、REST Clientを使用するとその手間が省け、HTTPリクエストで送信される画像ファイルの情報がVS code上で確認できるというものです。

この文章だけだと理解し辛いかもしれませんので、REST Clientを分かりやすくご紹介している記事が既にあるので、具体的な挙動やインストールの方法はこちらの記事でご確認して頂ければと思います。

https://qiita.com/toshi0607/items/c44

元記事を表示

【Laravel】検索機能を実装する(流れ)

##【概要】
作成しているポートフォリオに検索機能を実装したので、備忘録として投稿します!
細かな説明というよりは、一連の流れで記述していきます。
今回作成する機能はプルダウン検索、ラジオボタン検索、フリーワード検索(部分一致)です。
プロジェクト一覧からの検索を想定しています!

###開発環境
PHP 7.2.34
Laravel 6.20.32
Apache 2.4.6
mysql 8.0.26

###今回作成する画面
今回作成する画面の完成図はこちらです!
![検索画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1046420/9df1b2f3-201f-4f3d-3ce6-13ee0ca384bc.png)

##①migrationファイル/seederファイルを作成
❶migrationファイル
案件テーブルを作成します。

“`php:××××_××_××_××××_create_projects_table.php

元記事を表示

[AWS_13.2]必須モジュール gd がインストールされていないか、無効化されています。

##環境
AWS EC2 t2.micro
PHP 8.0.2
WordPress 5.7.2

##エラー
![スクリーンショット 2021-05-13 23.46.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758644/0dc234e3-7f9e-5f42-37da-e545ce710841.png)

##原因
phpのアップデートで`php`のつく諸々を削除したが、phpを再インストールする際にその諸々は再インストールしていなかった。

##解決法

“`terminal
yum -y install mysql httpd php-mbstring php-xml gd php-gd
“`

元記事を表示

[AWS_13.1]php -vで「No such file or directory」のエラー

##環境
MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports)
macOS 11.3.1(20E241)
AWS EC2 t2.micro

##エラー
“`terminal
# php -v
-bash: /usr/bin/php: No such file or directory

# which php
/usr/bin/which: no php in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
“`

どうやら[AWS_13]でPHP既存の削除して、新しいバージョンのPHPを有効化したものの、新しいバージョンそのものはダウンロードできていなかったらしい。

##PHPをダウンロードして、確認

“`terminal
# amazon-linux-extras install php7.4
(省略)

# php -v
PHP 7.4.15 (cli) (built: Feb 11 2021 17:53:39) ( NTS )
C

元記事を表示

[AWS_13]PHPのアップデート

##環境
AWS EC2 t2.micro
PHP 7.2.34

##作業内容
PHPを 7.2→7.4へアップデート

##PHPのアップデート

1.EC2インスタンスへssh接続する

“`terminal
ssh -i <秘密鍵ファイル> ec2-user@<パブリックIPアドレス>
“`

2.管理者権限に遷移

“`terminal
sudo su –
“`

3.既存のPHPを削除

“`terminal
yum remove php*
“`

4.確認

“`terminal
# amazon-linux-extras list | grep php
15 php7.2=latest enabled \
17 lamp-mariadb10.2-php7.2 available \
_ php7.3 available \
_ php7.4 available [ =sta

元記事を表示

Docker composer のインストールでバージョンを固定する方法

# 概要

– DockerのPHPコンテナにcomposerをインストールする時のDockerfileの記載でcomposerのバージョンを固定する方法をメモ的にまとめる

# 方法

– 下記の様にPHPのDockerfileのcomposerインストール部分を記載することでcomposerのバージョンを2.2.4に固定する。

“`Dockerfile
# composerのインストール
RUN php -r “readfile(‘https://getcomposer.org/installer’);” > composer-setup.php && \
php composer-setup.php –filename=composer –version=2.2.4 && \
php -r “unlink(‘composer-setup.php’);” && \
mv composer /usr/local/bin/composer
“`

元記事を表示

laravel PHP バージョンを指定してuuidを生成する

# 概要

– uuid バージョン4の生成方法は下記で説明したが、その他のバージョンのuuidを取得する方法をまとめる
– [laravel uuidの生成(uuid version4のみ)](https://qiita.com/miriwo/items/25d2331dff5549d2a834)
– 本方法でバージョン1〜6までのuuidの生成をする事ができる。

# 方法

– ramsey/uuidというcomposerのライブラリを取得して使用する。
– [https://github.com/ramsey/uuid](https://github.com/ramsey/uuid)
– 下記コマンドを実行してramsey/uuidを取得する。

“`terminal
$ composer composer require ramsey/uuid
“`

– 下記の様にuseを記載することですぐにuuidを生成する事ができる。(下記はuuid バージョン4を生成)

“`php
use Ramsey\Uuid\Uui

元記事を表示

composer インストール時にバージョンを指定する

– 2.2.4に固定したい時は下記

“`
$ php -r “readfile(‘https://getcomposer.org/installer’);” > composer-setup.php
$ php composer-setup.php –filename=composer –version=2.2.4
$ php -r “unlink(‘composer-setup.php’);”
$ mv composer /usr/local/bin/composer
“`

# 参考文献

– [https://getcomposer.org/download/](https://getcomposer.org/download/)

“`
–version
You can install composer to a specific release by using the –version option and providing a target release. Example:

php composer-setup.php –version=1.0.0

元記事を表示

良い感じのphpのクエリビルダを探して

さくっとphpを書く時に、フレームワークを導入するまでも・・・。な時に一番困るのがmysql用のライブラリ。直書きはちょっとめんどい。と言うわけで良い感じのクエリビルダを今のうちに探してメモしておくまん。

https://packagist.org/packages/usmanhalalit/pixie

シンプル。グループの記法が個人的に結構好み。

“`php
QB::table(‘my_table’)
->where(‘my_table.age’, 10)
->where(function($q)
{
$q->where(‘name’, ‘LIKE’, ‘%usman%’);
// You can provide a closure on these wheres too, to nest further.
$q->orWhere(‘description’, ‘LIKE’, ‘

元記事を表示

mysqlで絵文字以降が消える問題の対策(PHP)

表題通り。

複数データをserializeしてmysqlに収納していたら、一部データが吹っ飛ぶことがあった。調べると絵文字のせいで、そこ以降の文字列が全てふっとび、serializeとしてのデータを保持できずに、変換できなくなっていた。これの対策をする。

mysqlのバージョンが低いと、UTF-8環境で絵文字が吹っ飛ぶらしい。なので、これを回避するために、文字列を全てエンコードしちゃうという力業にでる。

“`php
function my_serialize($obj) {
return json_encode(serialize($obj));
}

function my_unserialize($obj) {
$temp_obj = json_decode(@unserialize($obj), true);
if ($temp_obj) $obj = $temp_obj;
return $obj;
}
“`

シリアライズした文字列をjsonでエンコードすることで、絵文字用の文字列も全てエンコードしてしまう。それをデコードするときは、

元記事を表示

PHP基礎 ~連想配列編~

## はじめに
この記事はフロントエンドエンジニアがバックエンド言語を勉強しようとアウトプット目的で書いている記事になります。
自分用のメモとして書いていきます。

## 配列
“`php
$array = [‘りんご’,’みかん’,’バナナ’];
echo $array[1]; // みかん
“`
JavaScriptとあまり変わらないですね。
「$」がつくとテンプレートリテラルっぽいですね。

## 連想配列
“`php
$company = [
‘開発部’ => [
‘佐藤さん’, ‘鈴木さん’, ‘田中さん’
],
‘総務部’ => [
‘青木さん’, ‘高田さん’, ‘小林さん’
]
];

echo $company[‘開発部’][1]; // 鈴木さん
“`

ふむふむ、オブジェクトのキーとバリューは「=>」で表現するのね。
なんだかアロー関数みたいだ。

### もっと高階層にしてみる
“`php
$company = [
‘開発部’ => [
‘佐藤さん’ => [
‘身長’ => 170,

元記事を表示

一部ディレクトリだけWordPress導入したサイトの、共通部分二重管理問題を解決する

#背景
もともと静的HTMLで作ったサイトに、更新コンテンツなど一部ディレクトリだけWordPressを導入するってケース、あると思います。
フルで全ページWordPressで作ったサイトでは、ヘッダーやフッターなどの共通部分はWordPressテーマだけで管理できますよね。
でも、一部ディレクトリだけWordPressだと、そうはいかない。
ヘッダーフッターなど共通部分に更新が入ったら、HTML内の該当部分を編集して、WordPressテーマのheader.phpとfooter.phpも編集して…って効率がよろしくない。ミスもありそう。
一括管理したい!!!!
ということで、一括管理できるようにしました。

#ファイル構成
こんな感じの構成のサイトだとしましょう。

“`
.
├── index.html
├── about
│ └── index.html
├── assets //画像やCSSはここに格納
└── wordpress // wordpressディレクトリ
└── wp-content
“`

#手順
###PHPが動くようにする
まず、index

元記事を表示

paiza PHP Bクラス 過去問の日別訪問者数の最大平均区間(前半)

タイトル通り、paizaのPHP Bクラス 日別訪問者数の最大平均区間を自力で何とかクリアしたのですが
PHPは解答コードがなかったため、自力でやるしかなく足りない頭がパンクしました。笑

もっとスマートな書き方があるとは思いますが、
初学者の方などの参考になればと思いますのでよろしくお願いします。

問題文はこちらから確認してください。
https://paiza.jp/works/mondai/skillcheck_archive/max_range

コードの記入はpaiza.ioを利用して、入力などを行ってます。
paiza.io:https://paiza.io/ja/projects/new

ではコードを書いていきます!
###1.入力値を求める

“`
[$n, $kya] = explode(‘ ‘, trim(fgets(STDIN)));
$log = explode(‘ ‘, trim(fgets(STDIN)));
“`
$nには全n日分の日数、$kyaにはキャンペーンを行った日数がわかります。
$logにはn日分の一日分の閲覧数の値が入ります。

pai

元記事を表示

Google SpreadSheetを簡易CMSとして使ってみた

## 背景
WEB制作に関して、CMS化するほどでもないけど、サイトの外部で簡易データベース的な管理をしたいという要望があったため、Google SpreadSheetを簡易データベースとして使用するコードを書きました。
## 注意点
– SEOを考えると、CMS化するなりして頑張ってサイト更新した方がいいかもしれないです。
– Google Apiを使用しますが、これに更新が走ると動かなくなることがあります。定期的にチェックしましょう。

## 手順
### Google SpreadSheetをJSONで取得する
こちらの記事を参考に。APIキーなどを発行します。

【最新版】Google SpreadSheetのデータをJSONで取得する手順

スプレッドシートのデータの形は、1行目にデータの項目名、2行目以降に実データが入っていると仮定します。
ここではこんなデータということにしましょう。
これをHTMLに出力します。
![スクリーンショット 2022-02-04 22.22.09.png](https://qiita-image-store.s3.ap-northe

元記事を表示

OTHERカテゴリの最新記事