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

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

Modx 覚書

# スニペット
## 新着情報自動取得
### Dittoスニペット

“`diff_php
[[Ditto?startID=’新着情報ファルダのID’ &orderBy=’pub_date DESC’ &display=’20’ &tpl=`index_news_item` ]]

//Dittoスニペット 複数のファルダから取得(カテゴリ別けと同じ)
[[Ditto?startID=’28,29,30,31,32′ &orderBy=’pub_date DESC’ &display=’20’ &tpl=`index_news_item` ]]
“`

### 表示テンプレート用のチャンク例

“`diff_html

[[the_page_title &id=[+parent+]]]
<

元記事を表示

dockerを使ったPHPの環境構築

ただの覚書です。

“`docker-compose.yml“`
“`yml
version: ‘3’
services:
#MySQL用コンテナ
mysql:
container_name: db
image: mariadb:10.4
volumes:
#./dataフォルダに作成してる
– ./data:/var/lib/mysql
environment:
– MYSQL_ROOT_PASSWORD=root
– MYSQL_DATABASE=todo
– MYSQL_USER=todo
– MYSQL_PASSWORD=todo
ports:
– 3306:3306
#php用コンテナ
php:
container_name: php-apache
#./phpフォルダに作成してる
build: ./php
volumes:
#./sourceフォルダに作成
– ./source:/

元記事を表示

Sailを使ったLaravelの環境構築(Docker)

Dockerでの環境構築は大変だと思っていた

ずっとローカルに環境構築し続けて半年。Dockerを使い始めて一週間。いくつかのプロジェクトを作って感じたことがある。
Dockerfileとdocker-compose.yml毎回書くのめんどくさすぎる。これなら正直ローカアルに環境構築した方が早いし個人開発だけなら困らないと思っていたが、実務では使うと思い使っていたところに僥倖

`curl -s “https://laravel.build/example-app” | bash `
これを使えば一撃でプロジェクトの作成ができる。。。教えてくれる人がいない為知りませんでした。
公式ドキュメントにはこうある。
https://laravel.com/docs/9.x/installation#main-content
## macOS での開始

Mac で開発していて、Docker Desktopが既にインストールされている場合は、単純なターミナル コマンドを使用して、新しい Laravel プロジェクトを作成できます。たとえば、 **「example-

元記事を表示

Twilioでの電話通知機能(Laravel)

## はじめに
Twilioの電話通知機能をLaravelにて実装しました。
備忘録として記載させていただきます。

| 開発環境 |バージョン |
|———–|————|
| __Laravel__ | 8.83.19 |
| __PHP__ | 7.3.10 |

## Twilioの導入

1,Twilioトライアルアカウントを作成する
  Twilioに担当者に問い合わせてトライアルアカウントを作成してもらう。
  Twilioの**アカウントSID**、**AUTHトークン**、**架電元電話番号**を担当者からもらう。

2,Twilioライブラリーをインストールする。

“`ターミナル:ターミナル
composer require twilio/sdk
“`
  参照URL(Twilio公式サイト)
  https://www.twilio.com/ja/docs/voice/quickstart/php

3,架電通知する
“`PHP:TwilioController.php
use Twilio\

元記事を表示

コメントコーディングで実装内容を明確化しよう

## 前置き
私は実装が苦手なので、日頃から頭で考えるより紙に書いたり、PCのメモに書いたりして頭の中を整理をするようにしています。
その一環で、時間があるときは実装時にコメントコーディングしてみるということをしています。
実装苦手な人やプログラミング初心者向けの紹介になります。

## コメントコーディングの方法
”**自分が日頃使っている言語でコーディングしてみる**”これが大きな特徴だと思います。
私は日頃から日本語を使っているので日本語で書いてるのですが、注意したいのは「箇条書きをする」というところです。

“`php
public function 東京駅から福岡空港まで行く値段を計算する()
{
//自宅から東京駅まで行く値段を計算
//東京駅から羽田空港まで行く値段を計算
//羽田空港から福岡空港まで行く値段を計算
//福岡空港から博多まで行く値段を計算
}
“`
これほど大雑把でもこのコメント4行をメソッドにしてみようかと考えることができます。
また上記は駅や空港を限定していますが、場所を限定

元記事を表示

PHP のバリデーションの方法

概要

会社情報を登録して、表示するメモアプリを作成していたのですが、``のバリデーションがめんどくさかったので、残しておこうと思います。

バリデーションで確認したい事 2つ

1.日付が正しい形式で入力されているか?を確認する

yyyy-mm-dd の形式で入力がされているかどうかを確認する。
日付以外の文章などが入力されている場合はエラーを表示するようにする。

2.存在する日付かどうか?を確認する。

2022年の17月65日みたいな、ありえない日付が入力されている場合はエラーを表示する。

ユーザーが入力をするフォーム
“`html



<

元記事を表示

MacでのPHPバージョン変更方法(Brew)

#### BREWでPHPを管理していて、なぜか7.4のまま。

brew unlink php@7.4
brew link php@8.1

でもphp -vでは、php7.4….と表示される。。。

#### 原因

sourceコマンド打ってなかった。

備忘録

元記事を表示

機能拡張を可変クラスで局所化する

# 1.はじめに
 うちではgoogleAssistantからIFTTT経由でメインのPCをWOLできるのですが、ここのところうまくうごきません。googleAssistantと外部サービスはあんまりうまく行かないときがあるので今回もそうなのかもしれません(調べていない)。ただ、IFTTTをどうこうするというより、googleAssitantから自前のフルフィルメントを通してWOLする経路を造ってもいいのかもしれません。

# 2.おさらい
 自前で用意している〈試験版〉フルフィルメントからジュークボックスサービスに連携するモデル図を以下に示します。
![googleAssistantButlerSystem.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696131/fd9f35ae-b4e1-1057-b9a6-06f0e62d3cca.png)

 フルフィルメントはgoogleAssistantから送られる登録済みのデバイスが使える機能要求を受け付けます。単純なものではスマートコンセントのオン

元記事を表示

Laravel エラー: Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”. You are running 8.0.8. in /Applications/MAMP/htdocs/leravel/test/vendor/composer/platform_check.php on line 24

環境は下記の通り
・Mac OS
・Laravel v9.41.0 (PHP v8.0.8)

MAMPでlocalhostにアクセスした時に以下のエラーメッセージが発生した時の対処法をまとめました。

“`エラー
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”. You are running 8.0.8. in /Applications/MAMP/htdocs/leravel/test/vendor/composer/platform_check.php on line 24
“`

エラー内容を簡単に翻訳すると、PHPのバージョンが違うということで、PHPのバージョンを変更しないといけないということがわかると思います。
このエラーの対処方法としては、PHPのバージョンを引き上げる必要があります。
それは下記のコマンドをターミナルで打つことで実装することができます。

“`PHPのバージョンを

元記事を表示

文字列への変数埋め込み

C#

“`c#
string word = “World”;
string text = $”Hello, {word}!”;
“`

JavaScript

“`javascript
const word = “World”;
const text = `Hello, ${word}!`;
“`

PHP

“`php
$word = “World”;
$text = “Hello, {$word}!”; // ${word} でもおk。但し、PHP 8.2以降では非推奨だとコメントで教えてもらいました。
“`

Python

“`python
word = “World”
text = f”Hello, {word}!”
“`

Ruby

“`ruby
word = “World”
text = “Hello, #{word}!”
“`

元記事を表示

【PHP】switch文のbreakを省略するしないで挙動が変わる

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

## breakを省略する場合

PHPのswitch文では“`break“`を省略するとフォールスルーという書き方になり、case文の処理が続けて実行される。

> CASE文の終わりにbreak文を書かない場合は、PHPは 次のCASE文を実行しつづけます。

https://www.php.net/manual/ja/control-structures.switch.php

“`php
$value = ‘1’;

switch ($value) {
case ‘1’:
echo ‘承認待ち’;

case ‘2’:
echo ‘承認済み’;

case ‘3’:
echo ‘承認拒否’;
}
“`

実行結果(見づらいので改行した)
“`
承認待ち
承認済み
承認拒否
“`

## break省略しない場合

一つめの“`break“`で抜けるため「承認待ち」しか表示されない。

“`php
$value =

元記事を表示

PHP 連想配列の値を使って配列に置換する ( array_values )

# 例

“`php
array_values(
array(
“A” => 10,
“B” => 5,
“C” => 7
)
);
“`

結果

“`
Array
(
[0] => 10
[1] => 5
[2] => 7
)
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

【Laravel】最近WhereInの返す順番で詰まった・・・

# はじめに
もう1年以上書いていないことにびっくりしました。
2022年あけましておめでとうございます

# 仕様
DB
Products
| id |name|created_at|updated_at|
|——-|——-|—-|—–|
|1|みかん|2022-11-24 15:00:00|2022-11-24 15:00:00
|2|おでん|2022-11-24 15:00:00|2022-11-24 15:00:00
|3|らーめん|2022-11-24 15:00:00|2022-11-24 15:00:00
|…|…||

こういったDBがありまして、
某サイトみたいな「最近チェックした商品」という機能が欲しいです。
実際にチェックした順番は、「おでん→らーめん→みかん」とします。

# whereInの仕様
わい「なるほど!簡単やな」

“` ProductController.php

public function productHistory()
{
# そのユーザがチェックした商品を取得する処理は省略します
$prod

元記事を表示

PHP8.2バージョンアップ 新機能

## 目次
– 概要
– PHP8.2 新機能3選
– おまけ
– 最後に

## 概要
今回のスキルアップのため不定期で30分でインプットしたことを投稿の
第五弾として、PHP8.2 新機能についてやっていこうと思います!

未経験からエンジニア転職を目指し、2021年10月頃から本格的にプログラミングに触れ、2021年11月頃からPHPを触り始めたので、
2021年11月25日のPHP 8.1と今回のPHP8.2へのバージョンアップで2回目のバージョンアップを経験することになりますが、
PHP8.1の頃はバージョンアップしたことも知らなかったので実質初めてのバージョンアップで楽しみです!

今回はPHP8.2の新機能の中から30分以内でインプットできる内容から3つ選んでご紹介しようと思います。

第四弾は、[Enum(列挙型)とは?](https://qiita.com/kitamurakunihiko/items/296ea5f3bda3be017836)について投稿したのでよければ確認してみてください?
 

## PHP8.2 新機能3選
### 1. [Deprecate

元記事を表示

【PHP】可変変数で「カラスは白い」と言ってみた

こちらの記事はPHPの可変変数についてまとめたものです。

PHPで可変変数を使用する上でのメリットや懸念などについて、ソースコードと併せてまとめてあります。どうかご参考いただければ幸いです。

## 投稿の目的

本投稿の目的は、PHPにおける可変変数について自分なりのアウトプットを試みることです。

知識を整理するためのアウトプットはとても有意義なことですし、それをネット上で共有すれば自分がどれだけ理解しているかを知ることにもつながります。

プログラミング言語に関する投稿は初めてですが、思い切ってまいります!

## PHPにおける可変変数とは何か?

PHPには可変変数という変数があります。

これにより変数名に別の変数の識別子を指定することで、変数名を動的に付け替えることができます。ただ、この文言だけで可変変数について理解することはなかなかできないかもしれません。

そこで実際に、ソースコードを書いたり動かしたりしながら確認していきます。

## PHPで可変変数を使ってみる

早速ですが、まずPHPの可変

元記事を表示

PHP-関数

# PHP-関数

* ドキュメント
https://www.php.net/manual/ja/language.functions.php

1. 関数の基礎
【引数】 
・リファレンス渡し → バグの温床になりやすい
・デフォルト引数
・可変長引数
・名前付き引数 → 引数の順番を変えたくない、気にしなくてよいときに使う
【返り値】
・return
・可変関数 → 関数の呼び出しを動的に行える

1. 無名関数
クロージャーとも言われる
関数名を持たず、値として受け渡しできる
関数の引数に関数を渡したい時に使う
一回しかしない処理の時、関数を定義しないので、省スペースで書ける
親のスコープの変数を引き継ぎたいときは、useを使う※親スコープの変数は使えない。
無名関数は、簡単に書くことができる(アロー関数)
※アロー関数は、無名関数と違いuseを使わなくても、親スコープの変数を自動的に使える

1. 関数を作成する理由
・プログラムの複雑さを下げるのが重要な理由
・詳細な処理を抽象化隠蔽することができる。
・コードの重複を避けることもできる。変更による箇所が一箇所にな

元記事を表示

MAMPでPHP文字化け

MacでMAMPインストールしたが文字化けしたので、対策を備忘録
PHP7.4.12のバージョンを使用

参考にした記事
https://plaza.rakuten.co.jp/taro3chidayo/diary/202005090000/
https://qiita.com/redamoon/items/28e7bbe1ccbf58cbbd04

MAMP/bin/php/php7.4.12/conf/php.ini
php.iniを一部書き換える
その前にバックアップとっておく

左辺をワード検索して、右辺を書き換え
文頭に「;」があれば削除
default_charset = UTF-8
date.timezone=Asia/Tokyo
mbstring.language = Japanese
mbstring.http_input = auto
mbstring.internal_encoding = UTF-8
mbstring.detect_order = UTF-8,SJIS,EUR-JP,JIS,ASCII

これでMANPを再起動すれば治るはずが、治らない。

元記事を表示

【PostgresSQL】WindowsPCのSQLサーバーの立て方

# 【PostgresSQL】WindowsPCのPostgresサーバーの立て方

## インストール

### 1. PostgresSQLのインストール
以下のサイトからPostgresSQLのインストーラーをダウンロードして、実行する。

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

PostgresSQLコマンドを使用するため、”システム環境変数の設定”から変更して、下記のフォルダへパスを通す。

“`
C:\Program Files\PostgreSQL\15\bin
“`

### 2. Openjdkのダウンロード
以下のサイトから、任意のOpenJDKをダウンロードする。(例 JDK 19 etc)

https://jdk.java.net/

任意のフォルダに置く。binの中にjava.exeなどがあり、merabase.jarを起動するときに使う。

“`
C:\Program Files\jdk-19.0.1\bin
“`

### 3. Metabase

元記事を表示

カプセル化をphpで説明してみた

1.カプセル化とは?
外部からデータや手続きの詳細を隠蔽すること、アクセスできないようにすることを「カプセル化」と言います。
PHPでは、**private**などを用いてクラスの外から変数やメソッドにアクセスできないようにすることで、「カプセル化」を実現しています。
以下で実際のコードを見てみましょう。

2.カプセル化がされていないPHPのコード
“`
//カプセル化されていないコード
class hoge {
public function pub_func() {
echo “public”;
}
}
$obj = new hoge();
$obj->pub_func();

//出力結果
public
“`
上記では、修飾子publicでメソッドを定義しています。
この時はclassの外でメソッドを呼び出しても、メソッドが実行されることが
わかります。
クラスの外からメソッドにアクセスできることから、このコードはカプセル化がされていないことがわかります。

3.カプセル化がされているPHPのコード
“`
//カプセル化されているコード
class hog

元記事を表示

PHP Fatal error: Uncaught Dotenv\Exception\InvalidFileException: Failed to parse dotenv file. Encountered an invalid name at xxxxx の解決例

## エラーが出た環境
xserver
larravel8
PHP 8.0
mariaDB
node 14.17.xx

## 何をしようとしたら起きた?
.envを環境ごとに.env.prodと.env.localのように分けても自動で読み取れる実装をしたところ、レンタルサーバー上でタイトルのエラーが出た。(nameに当たるxxxがxserverへのssh接続のコマンドだった)

## 原因
.env.prodを作成(コピーアンドペースト)したときにsshコマンドまで貼り付けてしまった。

## 結論(修正方法)
.envファイルの不要な記述を削除で直った。

## 余談
上記の作業中に.envファイルの`APP_ENV=production`を`APP_ENV=prod`にした箇所でもバグったので、.envのエラー探しのときは確認してみても良いかもしれない。

元記事を表示

OTHERカテゴリの最新記事