- 1. EntityManagerによるデータのDB永続化はSymfonyの最推しポイント
- 2. 遅ればせながらCakePHPに入門する
- 3. Laravel Activity Logを使って簡単に変更履歴機能を実装しよう
- 4. EC2のWindowsサーバーで、PHP (Laravel ) + Apache + RDS(MySQL) + SFTP の環境構築 ②
- 5. 【備忘録】【Laravel8】ファン交流サイトを作ってみよう②
- 6. DockerでCentOS7(PHP7.4 Apatch2.4 MySQL8)を構築してSSHで外部から接続するまで
- 7. 【備忘録】【Laravel8】ファン交流サイトを作ってみよう①
- 8. 例外エラー処理、スタックトレース、トップレベルとは?
- 9. PHPで.envを読む方法(失敗談含む)
- 10. PHPのarray_merge/array_merge_recursiveなど、連想配列に要素を追加する方法を解説
- 11. ConoHa VPSでLEMP(Nginx+PHP)環境を3分で用意する
- 12. Twilioの留守番電話検知機能(AMD)を使ってみた(PHP)
- 13. PHPでよく使う定数、関数、変数からMVCモデル,Object指向について考えた
- 14. EC2のWindowsサーバーで、PHP (Laravel ) + Apache + RDS(MySQL) + SFTP の環境構築 ①
- 15. (今更ながら)static、public/protected/privateを使う理由を言語化して理解
- 16. comporser + pear
- 17. .htaccess
- 18. HumHubの検索にApacheSolrを使わせてみる(後編)
- 19. ?XdebugでStep Debuggingしよう!
- 20. コマンド解説:今何やったの?
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: truedb:
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
`