PHP関連のことを調べてみた2021年12月05日

PHP関連のことを調べてみた2021年12月05日

PHPで.envを読む方法(失敗談含む)

# PHPで.envを読む方法

土日に暇だったので、素のPHPの学習をしていました。
普段は、Laravelというとても便利なフレームワークを使っていたので、
基礎的な部分が欠けていると思ったからです。

今回はPHPで.envを読み込むことにつまづいたので、記事にしようかなと思いました。

前提条件:
PC: MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) インテルチップ
MacOS: BigSur v11.6
php: v8.0.12
composer: v2.1.9
vlucas/phpdotenv: v^5.4
エディタ:VScode

任意のディレクトリにindex.phpと.envを作成
ブラウザに「password」と表示されたら成功ということで、、、やっていきます。

index.php

“`

元記事を表示

PHPのarray_merge/array_merge_recursiveなど、連想配列に要素を追加する方法を解説

## はじめに
連想配列に要素を追加する実装をした際に、様々な方法があり混乱したのでまとめました。
## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者
– 「連想配列に要素を追加する方法はいくつか知ってるけど、どうやって使い分けるのかわからない」という人

## 結論
下記の5つの方法があるので、目的別に使い分けましょう!

| No | 内容 | 備考 |
|—:|————-|————|
| 1 |キーを指定|要素を1つずつ追加する場合|
| 2 |キーを指定しない|キーを指定する必要がなく、要素を1つずつ追加する場合|
| 3 |array_merge関数|複数の配列を結合する場合|
| 4 |array_merge_recursive関数|複数の配列を結合し、キーごとにデータをまとめたい場合|
| 5 |プラス(+)演算子|複数の配列を結合し、キーの重複がない要素だけ追加したい場合|

## 【PHPで連想配列に要素を追加する方法1】キーを指定
最も

元記事を表示

ConoHa VPSでLEMP(Nginx+PHP)環境を3分で用意しよう!

VPSを使った**LEMP開発環境の構築を超高速・超簡単**に行う方法を紹介します。どん兵衛を作る暇すら与えずに、かつ失敗なく作れるので、カお試しあれ。

今年もアドカレの季節ですね。**ConoHa Advent Calendar 2021 5日目**です。
昨日は@Tapo0825さんが**[このはちゃん系のお話](https://qiita.com/Tapo0825/items/3bcc005843c1856dfb7e)**をなさっているので是非ご覧下さい!
割と技術系全振りで、真面目な内容なので面白さには期待しないでください…(笑)

# LEMPとは
LEMP(レンプ)とは、OSの**L**inux・Webサーバである**N**ginX・データベースである**M**ySQL・スクリプト言語である**P**erl・**P**HP・**P**ython等からなるシステム群の総称です。
**LAMPのNginXバージョン**みたいなものです。

LAMPではApache HTTP ServerをWebサーバーに利用していますが、**今年遂にNginxがApacheのシェアを抜いて1

元記事を表示

Twilioの留守番電話検知機能(AMD)を使ってみた(PHP)

#はじめに
株式会社じげんの山形です。
主にバックエンドとフロントエンドの実装を担当してます。

Twilioではプログラムからユーザーに対して自動電話をかける事ができます。
実装していて困ったのが、人が電話に出ても、留守電が起動しても、自動電話が指定したメッセージを流し続けてしまう事でした。その時に役立ったのがTwilioのAnswering Machine Detection(以後AMDと呼称)の機能でした。今回その機能を色々試して分かったことを書いていきます。

#環境

・PHP7.2以上
・Twilio Sdk をインストール済み(twilio/sdk: 6.31)
※筆者はLaravel5系を使用しております

#前提

・Twilioのアカウントを所有
・(電話可能な)電話番号を取得済み
・PHPで通話を発信する方法を知っていること(ご存知ない方は[公式のドキュメント](https://jp.twilio.com/docs/voice/tutorials/how-to-make-outbound-phone-calls-php)を参照してください)

#目次

1.

元記事を表示

PHPでよく使う定数、関数、変数からMVCモデル,Object指向について考えた

# はじめに
– こんにちはvolare大阪のジョンです。
– 今回は学校のチーム開発も近づいてきたのでphpの関数をclass化する事を考えました
勉強中の為何を言ってるんだ状態があるかもしれません。

### クラスとはなんだろう?
– 定数、変数、関数の処理をまとめたもの
– インスタンス?コンストラクタ?プロパティ?なにそれ

### 現在の理解レベル
– インスタンス class使う時に書かないとダメ
– コンストラクタ 使う時に同時に実行する関数
– メソッド newしたインスタンス(変数)->クラス内の関数名 でクラス内の関数使える
– 関数といっているがクラス内での呼び方はメソッド,外側が関数
– プロパティ クラス内の変数 $this->$無しプロパティ名 = 代入値 で 値を代入$this->$無しプロパティ名でクラス内、継承先で値を使い回せる
– アクセス権 継承とかobj,property使用する際の使用可能範囲

### そもそもPHPでよく使う事になる変数、定数、関数って何?
グローバル変数 : $_POST,$ _GET,$_SESSION,$_CO

元記事を表示

EC2のWindowsサーバーで、PHP (Laravel ) + Apache + RDS(MySQL) + SFTP の環境構築 ①

#はじめに
AWS EC2のWindowsサーバーでlaravelを使用したアプリ開発の案件があり、Windowsの環境構築をしましたので、その方法をまとめます。

今まで、Amazon Linuxしか使っていなかったため、windowsサーバーの癖に苦戦しながらも構築しましたので、参考になればと思います。
例えば、サーバーへの接続は、SSH接続ではなくリモートデスクトップ(以後、RDP)からアクセスするなどなど。。

#環境構築
– windows version
– windows server 2022
– インストール情報
– apache:2.4.51
– php:8.1.0
– phpmyadmin
– composer: 2.1.14
– laravel
– ルートディレクトリ
– C:\Apache24\htdocs
– RDS aurora
– MYSQL:8.0.23
– IDE
– Visual Studio Code
– SFTP
– OpenSSH

#簡易環境構築図

![

元記事を表示

(今更ながら)static、public/protected/privateを使う理由を言語化して理解

# 背景

– Laravelでの開発に従事し、実務3か月たって、タスクをちょこちょこ自力で対応できるようになってきた
– 自学の中で、過去のマージリクエストを読み込んでいるときに以下コードがふと気になった

“`php
class OrderModal
{
protected static function guestRows()
{

}


public static function modal(Order $order, $user)
{

$rows = self::guestRows($user, $order);

}
}
“`

– これを見た僕は

> 「ん?staticってなんだっけ?staticがついていてpropaty, publicが違うのって何が違うんだっけ?」
>

となった。

– まずは自分で調べて

– staticはクラスに対して依存するメソッドを作るためのメソッド
– publicとprotected

元記事を表示

comporser + pear

“`
{
“name”: “doishun/framework”,
“description”: “Solution Unit Framework”,
“type”: “project”,
“homepage”: “http://hoge.com”,
“license”: [
“GPL-2.0”,
“Commercial”
],
“repositories”: [
{
“type”: “pear”,
“url”: “http://pear.php.net/”
}
],
“require”: {
“php”: “>=5.3.3”
, “smarty/smarty”: “2.6.25”
, “pear-pear.php.net/PEAR” : “1.9.4”
, “pear-pear.php.net/Pager” : “2.4.9”
}
}

元記事を表示

.htaccess

## リダイレクトテンプレート

“`
order deny,allow
allow from all

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|css|ico|js)$ [NC]
RewriteRule ^(.*)$ index.php [QSA,L]

Options Indexes FollowSymLinks SymLinksIfOwnerMatch

####################
# mod_rewrite #
####################
# rewriteLogを確認する
#
# チェックポイント1 : httpd.confでAllowOverrideがallになっているか
#

元記事を表示

HumHubの検索にApacheSolrを使わせてみる(後編)

#はじめに
後編では、[前編](https://qiita.com/tomofu74/items/1ad13936f4c125c3ee31)の後がまぁどうったか書いておく。読者諸氏は、初めに右側にある目次を確認のうえ、参考になる部分は参考に、読むのをやめるなら今のうちにご判断をいただきたい。

#(前編のつづき)
[前編](https://qiita.com/tomofu74/items/1ad13936f4c125c3ee31)ではSolariumというPHPのライブラリだかなんだかをインストールして、PHPからSolrにアクセスすることができるようにしたあと、Searchモジュールをベースにカスタムモジュールを書き始めた。その後、データの追加のためのAdd、削除のためのdelete、書き換えのためのupdateまでは割とすんなりと作れて・・・。いよいよ、本丸、findの記述だ。

# 検索機能の本丸、find関数
HumHubの Search class (/humhub/protected/modules/search/engine/Search.php)のabstract fu

元記事を表示

?XdebugでStep Debuggingしよう!

この記事は[ミライトデザイン Advent Calendar 2021](https://qiita.com/advent-calendar/2021/miraito-inc)の4日目の記事です?
昨日は[@Nyokki](https://qiita.com/Nyokki) 大先生の[MySQLのEXPLAIN ANALYZEの読み方を勉強したよ](https://qiita.com/Nyokki/items/c2d95cb2a75d3c0acb64) という記事でした!
皆さん読みましたよね!?

なんでお前がミライトデザインのアドベントカレンダー参加してるんや!?って思うかもしれませんが

> エントリーは自由です、社内外の人たちと盛り上げていきたいです。

って書いてあったし、[@hirodragon112](https://twitter.com/hirodragon112)ファンなので参加しましたw

さて、何を書こうか迷っていましたが、ミライトデザインといえばPHPってイメージが強いのでPHPネタということでXdebugのことを書こうと思います。

最近の[若いエンジニ

元記事を表示

コマンド解説:今何やったの?

雑な投稿ですが、
環境構築とかで迷ってる人の助けになればと思います。

projectという、オープンソースのパッケージをダウンロードした前提です。

“`
$ cd project

$ cd ← ホームディレクトリに戻る
$ cd project ← projectフォルダへ移動する。
$ pwd ← 自分が今ドコにいるのかを確認する。
“`

「cd」でFinderで言う所の「フォルダ移動」です、
自分がどのフォルダを今触るかを変えます。

ちなみに、入力が面倒な時は「cd 」と入力した後で、Finderで移動したいフォルダを
ターミナルにドラッグ&ドロップすると、カンタンに入力できます。

“`
$ rm -f .gitignore
$ rm -rf /directly ←ディレクトリを削除する時
“`
上は「`.gitignore`」を削除するコマンドです。`-f`は確認なしで削除する意味です。
`rm` は「remove」で、 `-f` は「force」の頭文字。

“`
$ git init
`

元記事を表示

「おすすめ記事一覧を表示する」を実現する実装方法をあれこれ考えてみた

[WordPressアドベントカレンダー](https://qiita.com/advent-calendar/2021/wordpress)4日目の投稿です。

## これはなに?
「おすすめ記事一覧をTOPに表示する」という、よくある機能をいろんな方法で実装できないかと検討してみた記事になります。
最近WordPressサイトのカスタマイズでおすすめ記事を表示することがあったのですが、どう実装しようかとあれこれ考えたプロセスが楽しかったので、記事にまとめてみました。
これを読んでいる皆さんも自分ならどう実装するかな?と考えながら読んでいいただけたら幸いです。

## 実装するもの
このようなおすすめ記事一覧を実装することとしましょう。(デザインは適当に組んだものです。)
以下の条件を満たしていたら、どんな実装方法でもOKです。

– おすすめ記事が3つ
– TOPページに表示する
– 表示するコンテンツはサムネイル、カテゴリ、タイトル、公開日

![スクリーンショット 2021-12-03 22.11.21.png](https://qiita-image-store.s3.ap

元記事を表示

php: いろいろなリダイレクト

リダイレクトしたいURL
https://sample.domain/xxx

https://xxx.jp

#★PHPでかく場合
“`php
/**
* @Route(“/xxx”, name=”xxx”)
*/
public function index()
{
header(‘Location: https://xxx.jp’, true, 301);
exit;
}
“`

#★Symfonyで書く場合

“`php
/**
* @Route(“/xxx”, name=”xxx”)
*/
public function index()
{
return $this->redirect(‘https://xxx.jp’, 301);
}
“`

#★.htaccess でやる場合

“`
(Rewrite Engine on の下に追記する)
RewriteCond %{QUERY_STRING} ^$

元記事を表示

【Laravel】Str::isでは改行を扱えませんよという話

# 環境

PHP 8.0
Laravel 8.x
Docker(Laravel Sailで構築した環境を使っています)

# 目的

Laravelのヘルパ関数Str::isを使っていてハマった時の備忘録にすること

# Str::isって何よ?

ある文字列Aの中に、別の文字列Bが含まれているかどうか判定してくれるヘルパ関数です。いくつか例を挙げておきます。

“`PHP
use Illuminate\Support\Str;

$matches = Str::is(‘foo*’, ‘foobar’);

// true

$matches = Str::is(‘baz*’, ‘foobar’);

// false
“`
引用元(一部改変):[Laravel 8.x ヘルパ Str::is](https://readouble.com/laravel/8.x/ja/helpers.html#method-str-is)

# ある日のこと…

しゃっちょさん「キーワードの判定が改行に反応してくれないんだけど…」

私が参画していたプロジェクトでは問題のStr::is関

元記事を表示

ファミレスのメニューもどき管理画面を作ってみた

**下記サンプルサイトは同じDBから書き出したメニュー注文ページです。**
[▶︎サンプルサイト](https://mymenu.okamechan.com/menulist/)

**下記の記事の続きです**
[▶︎ファミレスのメニューシステムもどき作ってみた](https://qiita.com/kanrek_jyosi/items/22950ac280e6bb3a5d02)

**やりたいこと**

+ DBの連携、入力、変更、削除をブラウザで操作
+ 画像アップは別フォルダへ
+ DB一覧書き出し
+ バリデーションで同じ名前と画像はアップさせない

**作成ファイル**

+ index.php(ログイン画面)
+ logout.php(ログアウト画面)
+ control_top.php(トップページと追加入力)
+ change.php(変更UPDATE)
+ change_check.php(UPDATEのバリデーション)
+ delete.php(削除)
+ db_join.php(インクルード用、DBの接続や共通で使う関数と配列を格納)
+ select_cat.

元記事を表示

ajaxでControllerに飛ばした処理がDELETEだけ動かない

#はじめに
 この前、ajaxを使用し、画面内でデータ更新を行う処理を作成しました。
 その際、新規(CREATE)と更新(UPDATE)の処理は動くのに削除(DELETE)の処理だけなかなか動かずに時間を取られてしまったので備忘録です。

#結論
 結論から先に言います。
 新規や更新処理の時にエラーチェックで使用していたRequestの判定を削除処理でも使いまわした結果、削除処理では使用していなかった引数のチェック処理が勝手に走っていたため、インスタンスエラーが起きていました。

 原因をいろいろ探しまわった時に、DELETE処理はajaxのPOSTでは飛ばないというような記述があり、データの飛ばし方に拘っていた結果、気づくのが遅れた初歩的なミスでした。

 ちなみに返ってきていたエラーは422エラーでした。
 動き自体は正しいのですが、Request処理が内部的に処理できなかったためこのエラーが返ってきていたのかなあと思います。

#コード

 新規・更新処理時に使っていたコードがこれです。

“`javascript:hogehoge.js
// 新規・更新
$.ajax({

元記事を表示

PHPでNoSQLデータベース(簡易)を作る

# はじめに
こんにちは。初投稿のまろという者です。
Qiitaでは主にPHP系の投稿をしていこうと思ってます。
今回は、PHPでNoSQLのDBMSを作るわけです。
XMLじゃなくてJSONを使います。

# 概要
– NoSQLのDBMS
– JSONを用いる
– データをそのまま保存

# コード
いきなりコードです。

“`php:dbms.php
path = $path;
}
// ファイルパスの変更関数
function PATH($path){
$this->path = $path;
}
// ファイル内容を変換して取得
function GET(){
return json_decode(file_get_contents($this->path), true);
}
// ファイル内容を変換して書き換え

元記事を表示

コマンド上でphpコマンドを実行できるようにする(Windows)

PHPのPATHを設定する

PATHとは

PATHとは、コマンドを実行したときに読み込まれるファイル階層の設定です。

本来、プログラムをコマンドで実行する場合は、そのプログラムの保存場所を含めて書く必要があります。今回設定するXAMPPのPHP(C:xampp/php)を使用する場合は

C:xampp/php (続けて、実行内容やオプションなど)

と入力する必要があります。

これをWindowsの場合は、『システム環境変数』というWindows側で把握しているコマンドのブックマークに登録し、プログラム名だけで実行できるように設定することができます。(登録することをPATHを通すと言います。)

PhpStormでCodeShinifferを利用し、カスタムルールを読ませる。

# CodeShiniffer追加まで
https://qiita.com/reflet/items/3ddf3cab030a80af4d2a

# カスタムルールの適用
下図の青いPHP_CodeShiniffer inspectionを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272812/f91d6a0c-34ba-ceac-155e-9ebd76b8e30d.png)

Config standardをカスタムに変更する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272812/f1d20108-6399-947b-2536-c604657b476e.png)

config standard横の三点リーダを押し、ファイルを指定する。
適用すると、PhpStormがルールを読み込んでくれます。

元記事を表示

OTHERカテゴリの最新記事