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

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

EntityManagerによるデータのDB永続化はSymfonyの最推しポイント

[Symfony Advent Calendar 2021](https://qiita.com/advent-calendar/2021/symfony)の記事です。
個人的にSymfonyの最推しポイントだと考えている、データのDB永続化について語ります。

システムにおいて、DBなどへのデータ永続化は非常に重要な部分と考えています。プログラムが壊れている(=不具合がある)よりもDBなどのデータが壊れている方がシステムに与える影響が大きく、また間違った答えを導き出す原因となるため、システムからのデータ永続化については細心の注意が必要です。その中でもDBへの永続化はどのフレームワークも簡単にできることもあり、さらに注意が必要な箇所だと言えるでしょう。

ここでは推しを語る上で重要な要素、`EntityManager`、`Entity`、`オートワイヤリング`について紹介します。

## 永続化を司る。EntityManager

EntityManagerとは、Symfonyにおけるデータベースへの永続化を司るマネージャークラスで、正確にはDoctrineのクラスです。
Symfon

元記事を表示

遅ればせながらCakePHPに入門する

##この記事に書いてあること
・ドットインストールの[CakePHP3レッスン](https://dotinstall.com/lessons/basic_cakephp_v2)(最終更新2015年)について
・2021年に今更上記レッスンで勉強した感想
・CakePHPの仕様変更などで詰まった(レッスン通りに行かなかった)ところ
・詰まったところの解消方法
などなど
##今更でもCakePHP
PHPやるならLaravelが王道の世の中。
時代に逆行?してBaking Cakeといきます。

筆者のPHP経歴はWordpressのみ。
つまり無いに等しいけど基本文法くらいはわかるレベル。

こんなので美味しいケーキができるのかしら??

##初学者は黙ってドットインストール()
CakePHPの勉強を始めるにあたって、
まずどの媒体を選ぶかという問題にぶつかりました。
本、公式チュートリアル、ネットの記事、etc…

CakePHPは歴史が長いようで色々と選択肢はありましたが、
正直どれも情報が古く、本も最近の改訂版はなさそう。

(そもそもCakePHPのサポートが終了してい

元記事を表示

Laravel Activity Logを使って簡単に変更履歴機能を実装しよう

# はじめに
変更履歴の機能を実装するのって、考慮する事も多いし、大変ですよね?
Laravel Activity Logを使うと、簡単に変更履歴の機能を実装できます。
この記事では、laravel-activitylogをどのように導入するか説明します。

# やりたい事
– データの作成・更新・削除のユーザの動作に対して履歴を残したい。
– 変更履歴データを画面に表示したい。

# 使うライブラリ
laravel-activitylog
https://github.com/spatie/laravel-activitylog

# 実装手順
## 1.下記のコマンドを実行する。
– ライブラリのインストール

“`
$ composer require spatie/laravel-activitylog
“`
“`
$ php artisan vendor:publish –provider=”Spatie\Activitylog\ActivitylogServiceProvider” –tag=”activitylog-migrations”
“`
##

元記事を表示

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

#はじめに
題名の通り環境構築の続きになります。
PHPのインストールからです。
①はこちら↓

https://qiita.com/holdout0521/items/909f97cb0947bcec2eac

#流れ
1. EC2を起動設定
– Windowsサーバーにリモートデスクトップで接続する
– 日本語設定と時計合わせ
– Visual Studio Codeをインストール
– ApacheとVisual C++ ランタイムのインストール
– Apacheの起動`↑①ではここまで`
– PHPインストールし、Web上で確認
– RDSの起動
– composerとlaravelインストール
– プロジェクトを作成し、laravelページをWeb上で確認
– phpmyadminインストールし、Web上で確認`↑②ではここまで`
– OpenSSH を使用して Windows に SFTP サーバーをセットアップ

# PHPインストール
以下の URL より PHP をダウンロードします。

https://windows.php.net/download/
PHP 8

元記事を表示

【備忘録】【Laravel8】ファン交流サイトを作ってみよう②

※この記事は、[【備忘録】【Laravel8】ファン交流サイトを作ってみよう①](URL “https://qiita.com/asami___t/items/3ec542367795927d870e”)の続きです。

# 投稿一覧ページに、新規登録、詳細、編集、削除ボタンをつける

データの一覧という意味では前回のコードだけでもいいのですが、新規登録、詳細、編集、削除ボタンが一覧ページについていたほうが便利なので、用意しておきましょう。

post/index.blade.phpを更に編集し、下記のようにします。

#### ポイント
– idはvalue等ではなくurlに含んで送る(POSTの場合も)。
– 削除(destroy)は、リンク(GET)ではなくPOSTで処理する。idはurlで送る。
– 削除ボタンにbtn-destroyというクラスを追加。

また、restfulとかならhref=”/users/{{$user->id}}/edit”とする方が適切ですが、わかりやすさ重視でいきます。

“`php:post/index.blade.php
@extends(‘la

元記事を表示

DockerでCentOS7(PHP7.4 Apatch2.4 MySQL8)を構築してSSHで外部から接続するまで

#CentOS7

###説明
CentOS7のコンテナ内でphpとapatchを構成し、MySQLは別のコンテナを用意してCentOSから接続をする。

####ディレクトリ構成

“`
centos
├── Dockerfile
└── php
└── php.ini
docker-compose.yml
html
└── index.php
MySQL
└── data
“`

####docker-compose.yml

“`
version: ‘3.0’
services:
web:
build: “./centos7”
container_name: “centos7”
ports:
– 80:80
– 20022:20022
volumes:
– “./html:/var/www/html”
command: /sbin/init
privileged: true

db:
image: mysql:8.0
environment

元記事を表示

【備忘録】【Laravel8】ファン交流サイトを作ってみよう①

Laravel学習中の者です。
実際にアプリを作りながら習得していくことを目的として、
ファン交流サイトを作ってみます。

# ER図
未作成

# 前提

このプログラムは下記環境で作成しています。
+ MacOS
+ ターミナル
+ composer
+ php7.3以上
+ MySQL
が必要になります。

# composerのインストール

composerがインストールされていない場合、インストールが必要です。
▼インストールはこちらから(公式ページ)
https://getcomposer.org/doc/00-intro.md

公式だと難しいと思う方は「Mac composer インストール」で検索すると、インストール記事が見つかります。

ターミナルを開いて
composer –version
を実行してバージョン情報が表示されればOK。

# php7.3 and MySQL

MacにphpとMySQLをインストールするにはMAMPが最も簡単です。
MAMPはMac用のアプリで、PHP, MySQL, Apacheといった開発に必要なサーバー側のソフトウェアを

元記事を表示

例外エラー処理、スタックトレース、トップレベルとは?

###スタックトレースとは? (PHP)

スタックトレースというのは
>「例外が発生するまでに経てきたメソッド(関数)の履歴」

もう少し砕けた言い方をすると
>「あるメソッドでエラーが発生するまでに、どんなメソッドを、どの順番で呼び出したのか。の履歴」

例えばメソッド、methodA、methodB、methodC、methodDがあるとして

methodAの処理の中でmethodBを呼び
methodBの処理の中でmethodCを呼び
methodCの処理の中でmethodDを呼んだところでエラーが発生したとします。

“`php
function methodA()
{
methodB();
}

function methodB()
{
methodC();
}

function methodC()
{
methodD();
}

function methodD()
{
return 5 / 0; // 0除算で例外エラー発生
}

echo methodA();
“`

するとこのようなエラー画面が表示されます

![B66FC

元記事を表示

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
`

元記事を表示

OTHERカテゴリの最新記事