2021/10/02, 03に開催されてPHP Conference Japan 2021の登壇でお話ししたスライドです。 #phpcon2021 #phpcon #php
Services Platform.sh for Symfony Best platform to deploy Symfony apps SymfonyInsight Automatic quality checks for your apps Symfony Certification Prove your knowledge and boost your career SensioLabs Professional services to help you with Symfony Blackfire Profile and monitor performance of your apps
簡単なデモアプリを作りながら、著者自身が実務でSymfonyアプリを作るときにだいたい共通してやっていることを一つひとつ丁寧に解説していきます。 時間と紙幅の都合で書ききれなかったテクニックやTipsもたくさんありますが、Symfony初級者〜中級者の方には参考にしていただけると思います💪 デモアプリのコードは以下のリポジトリで公開しています。 https://github.com/ttskch/symfony-example-app/tree/tagged また、実際に動作するデモ環境もあるので、ぜひ触ってみてください。(Herokuの無料プランなので初回アクセス重いです🙏) https://symfony-example-app-tagged.herokuapp.com/ja/
Symfony Advent Calendar 2020 12日目の記事です。 Symfony CLIはSymfonyローカルマシンでの開発を支援するコマンドラインツールです。Laravel Installer(laravelコマンド)のようにSymfonyプロジェクトの作成にもできますが、それ以外にも優れた機能を備えています。その機能のうち、ぼくがよく使っている便利な機能をいくつかご紹介します。 Symfonyプロジェクトの作成 Symfonyのプロジェクトを作成するにはlavael Installerと同じ感じです。 プロジェクト名でディレクトリを作成し、ディレクトリ内にSymfonyをインストールします。以降のコマンドはプロジェクトのディレクトリに移動して、実行します。 余談ですが、Symfony CLIはコマンド実行時に、必ずアップデートを確認・ダウンロードし、常に最新のものが利用
PHP Conference Japan 2021でお話しさせていただいた、『SymfonyとDoctrineで簡単クリーンアーキテクチャ』ですが、実際にやってみようと思います。 当日のセッションはこちら やってみるユースケース 『ユーザが商品を購入する』『複数いる配送係に注文内容連絡する』っていうのをやります。 モデリング 概念モデル図 ユーザは複数の注文ができます。注文にはどの商品をいくつ買ったかがわかる注文明細が紐づいています。 配送係に連絡はするものの、注文には紐づかないので独立した形にしました。 クラス図 『ユーザが商品を注文する』というユースケースを実装するクラスと、『配送係に注文内容を連絡する』というユースケースを実装するクラスを用意します。 ここで、配送係に連絡するためには配送係を取得しないといけないので、データサービスを用意し、『配送係を取得する』処理を別途用意します。
前置き:例えばこんな要件ありますよね よくある要件として、フォームに カテゴリ と サブカテゴリ という2つの入力項目があり、選択されている カテゴリ に応じて サブカテゴリ の選択肢が変化してほしい、といったものを考えてみます。 この場合、もちろんSymfony側ではカスタムバリデーションを書くなどしてカテゴリとサブカテゴリの組み合わせが正しくない場合にエラーになるように実装することになるでしょう。 しかし、それだけだとフロントエンド側では間違った選択肢を普通に選べてしまうので、ユーザーは送信してみるまで間違いに気づくことができず、とても不親切です。(というかこの要件でその実装だったら普通にクレームでしょう😅) ちなみに、カスタムバリデーションの書き方については以下の別記事などをご参照ください。 symfony/formで「どちらか片方の入力は必須、かつ両方入力はNG」をバリデーション
こちらは Symfony Advent Calendar 2021 の11日目の記事です。 昨日は @ttskch さんの [Symfony] Securityアノテーションを使って複雑な権限チェックを行う | blog.ttskch でした。 どーも @kalibora です。今回は 「エンジニアじゃなくたって現在時刻を自由自在に操ってテストがしたいよ〜〜(CV: マヂカルラブリー野田) with Symfony」 と題した記事です。 どういう話かといいますと、例えばお正月の1月1日からお正月キャンペーンのようなものをやるとして、画面が1/1の0時から切り替わるけど、それを前もってQAやPdMなどエンジニア以外の人がどうやって簡単にテストするか?みたいな話です。 前半は Symfony に関係ない一般的な話、後半はそれを Symfony でどう実装したか?という2段構えで書かせていただき
Symfony Advent Calendar 2020 24日目の記事です! カルテット開発部では基本的にWebアプリケーションはSymfonyを使って開発していますが、実は「フレームワークはどうでもいい」と考えています。 「え?どういうこと?」という反応が予想されるので、内容と理由について説明します。 「フレームワークはどうでもいい」 私達が作りたいのは我々のモデリングしたドメイン(リスティング広告運用業務のドメイン)を体現したアプリケーションです。フレームワークのイケてる機能を使ったアプリケーションではありません。 モデリングしたドメインを適切に表現してユーザーに提供できるなら、フレームワークもプラットフォームも何でも良いのです。究極的にはエクセルマクロでも良いぐらいです。 現時点では「Webアプリケーションという形式に乗せたい」という要求があるため、Webアプリケーションのプラット
GDPR has been in place for years now, and we’re starting to learn more and more about how it’s going to be enforced and what it really means. The many questions people had that could only be answered by court decisions have now been answered. Over the past years, I’ve seen systems try and fail to correct implement GDPR. Here are the things I’ve learnt from court decisions and from mistakes made. T
JMSJobQueueBundleユーザーのためのMessengerコンポーネント移行ガイド(Symfony4時代のasyncジョブ実行入門) SymfonyでWebアプリケーションを作るとき、HTTPリクエストから直接実行するには重い処理があったらどうするか? 以前の記事 でも書いた通り、非同期処理を実装することが多いですね。 Symfony2時代の非同期処理のスタンダードは JMSJobQueueBundle でした。 JMSJobQueueBundleも一応Symfony4に対応してくれたのですが、不具合があって利用できない時期が長く、メンテナーの方が忙しいようでプルリクエストへの返信も遅れがちでした。乗り換え先をどれにするのが良いかTwitterで聞いてみたところ、 Symfony\Component\Messenger を使うと良いよというアドバイスをもらい、使ってみたらとても良
If you either love AWS services already, or are looking for a good option to use with your multiplatform products, AWS Cognito seems to be a good candidate to adopt into your technical stack. For me it was unknown, but once I started digging into it, I find it to solve some problems I was bored with solving. Setup Cognito on AWS For starters, we should prepare our Cognito user pool. We can do this
概要 dockerでsymfonyの構築ができたので、動いた時点のファイルをメモしています。 このページは参考ページをもとにしているため、合わせて読むとわかりやすいです。 M1チップMac BigSur 2021/5/11時点で動作。 前提 Docker-syncがインストールされている。 まだの場合、一番下の参考ページにコマンドがあるのでコピペして実行してください。 Dockerは知っている。 コンテナ、イメージ、ボリュームは知っている。 apacheのconfや.htaccessはどういうものかわかる。 MAMPや簡易サーバでなら構築できる。 Linuxの基本はわかる。 参考ページと同じディレクトリ構成を作る。 任意の空のフォルダに移動して、下記のコマンド。 できたファイルに以下をコピペ。 docker-sync.yaml だと この後の工程でエラーになったので拡張子に注意(aが余分)
ソフトウェアをチーム間で開発すると、コードベースの管理や、開発者全員が問題なく使える開発環境の準備など、さまざまな困難が生じます。 Gitはバージョン管理において大きな役割を果たしており、誰もが問題なくコードベースを操作できるようになりましたが、作業環境が原因で混乱が生じるリスクがまだあります。 WindowsやmacOS、Linuxなど、開発者が好むオペレーティングシステムはさまざまであり、同じことがアプリケーションの導入環境にも当てはまります。 その結果、特定のエラーが発生すると、問題の原因を突き止めることが困難になります。エラーが1つのOSでのみ発生することが混乱に拍車をかける可能性もあります。開発者の間で有名なフレーズ、「It works on my machine」(私のマシンでは動作するのに)の状態につ
前のページの続きになります。 前回の記事はこちら。 migrateできるようにする。 前回までで、ルーティングとtwigテンプレートの導入までは正常に動いていましたが、 教科書(Symfony4入門 掌田 津耶乃著)を読み進めていたところ、DBにマイグレーションするところでエラーになりました。 なぜか、postgresに接続しようとしている。 そんなことをdocker-composeに書いた覚えはないのに・・ そこで、以下のファイルを修正 /app/my_app/.env (symfonyのプロジェクトルートにある方の.env 前回のdocker用.envとは違う) DATABASE_URL= の後に、docker-compose.yamlのDATABASE_URLの値をコピペする。 mysql以外のドライバはコメントアウトする。 # DATABASE_URL="sqlite:///%ke
ツイート ブックマーク SymfonyのRememberMeとはなんぞや?今まで雰囲気で使ってたので調べてみた。 RembemerMeとは? どのように実現しているのか? RememberMeとは? 公式ドキュメントによると以下のように記載されている。 ユーザーが認証されると、通常、ユーザーの資格情報がセッションに保存されます。つまり、セッションが終了すると、ユーザーはログアウトされ、次回アプリケーションにアクセスするときに再度ログイン詳細を提供する必要があります。remember_meファイアウォールオプション付きのCookieを使用して、セッションが継続する期間よりも長い間ログインしたままにすることをユーザーが選択できるようにすることができます。 https://symfony.com/doc/current/security/remember_me.html つまり、セッションが切れ
「Symfony 6.2」では主に、メール送信機能を提供する「Mailer」コンポーネントを強化した。まず、メール送信に成功したときと失敗したときに発生するイベントを追加した。成功したときは「SentMessageEvent」、失敗したときは「FailedMessageEvent」が発生する。イベント発生時に、メール送信の内容や失敗時のデバッグ情報を出力するといった使い方ができる。 送信するメールの内容は決まっていても、どの方法(メールサーバーを使う、あるいはクラウドサービスを使う)で送るのかはメール送信直前まで決まらないというときがある。そのような時のために、メールを送信する「別の方法」を記述しておけるようになった。 Symfonyは元々、HTMLメールの本文を用意しておけば、それをプレーン・テキストのメールに変換する機能を持っている。送信先に応じて、メールの形式をHTMLとプレーン・テ
Photo by ThisisEngineering RAEng on UnsplashIntroductionSoftware development is not just a technical matter, but also understanding the business for which we create solutions. Domain Driven Development (DDD) is the answer to these challenges, offering an approach that focuses on modeling the core business logic. In this article, we will take a closer look at DDD, its benefits, and practical ways o
Les-Tilleuls.coop is a team of 70+ Symfony experts who can help you design, develop and fix your projects. We provide a wide range of professional services including development, consulting, coaching, training and audits. We also are highly skilled in JS, Go and DevOps. We are a worker cooperative! Shopware offers you cutting-edge, highly adaptable ecommerce solutions trusted by the world's most a
例えば以下のような仕様を考えます。 User エンティティと Profile エンティティがOneToOneで紐付いている ユーザー登録フォームに User エンティティの情報と Profile エンティティの情報を両方入力してもらう フォームが送信されたら User と Profile の両方のエンティティを同時に作成する Symfonyでこういう仕様を実装するときのセオリーを説明します。 比較的Symfony初心者さん向けの内容になります。 1つのフォームで1つのエンティティを作る場合なら まず、普通に1つのフォームで1つのエンティティを作る場合についておさらいしましょう。 例えば以下のような User エンティティがあるとします。 /** * @ORM\Entity(repositoryClass="App\Repository\UserRepository") */ class U
A lean framework stack for agile Web development based on Symfony and Vuetify GitHub Documentation Extremely fast Less than 1 ms response time in benchmarks. REST requests are significantly faster compared to other common PHP frameworks, even in development mode. No experiments Built on top of well documented and tested standard components like Symfony and Vuetify. No need to learn something compl
フレームワーク Symfony 4.0 を使ってメールフォームを作ります。新規プロジェクトとして作っていくのですでに作成済みの箇所は読み飛ばして下さい。 Symfony のインストール 本体のインストールは Composer で行います。「symfony-contact」の部分はプロジェクト名なので好きな名前に書き換えて下さい。 composer create-project symfony/skeleton symfony-contact コントローラー Symfony のコントローラーは src/Controller フォルダにあります。「ContactController.php」ファイルを作成して下さい。 今回必要なページはフォーム画面と送信完了画面です。Symfony ではルーティングの方法がいくつかありますが、今回はコントローラーのアノテーション(コメント)を使います。 メール
参考資料 入門って書いてあるのにだいぶ苦労したわ... https://leanpub.com/symfony5-nyumon これドル払なのに日本語だ!(衝撃) なんでservice.ymlってなんだよって思ったら 【Symfony】サービスコンテナを実装する がわかりやすいね サービスを必要とするオブジェクトに対して、外から渡すことにとって、疎統合な設計を実現します。 開発環境 PHP 7.4.6 PhpStorm(PhpStormが勝手にやってくれるインポートなどの部分は省略していることが多いので違うエディタでやってる人は注意) PHP拡張を確認 amqp Download the latest stable release from here https://pecl.php.net/package/amqp for your PHP version (TS, x64); Unpa
Services Platform.sh for Symfony Best platform to deploy Symfony apps SymfonyInsight Automatic quality checks for your apps Symfony Certification Prove your knowledge and boost your career SensioLabs Professional services to help you with Symfony Blackfire Profile and monitor performance of your apps The Symfony Mailer component was released for the first time in Symfony 4.3, released in May 2019.
dockerの開発環境で送信ができない。。。 これでsendmail用のDSNがわかったので、「sendmailでメール送信ができる!」とワクワクして、「[Creating & Sending Messages](Creating & Sending Messages)」のサンプルコードを実行しました。 Connection to "process /usr/sbin/sendmail -bs" has been closed unexpectedly. どうやらsendmail -bsでないと送信ができないようです。 確認した環境は、docker上のAlpine+ssmtpなのでsendmail -tには対応していますが、sendmail -bsには未対応なのです。 postfixを入れたコンテナ作るのも面倒ですしね。 レンタルサーバで確認 & 困ったことが。。。 面倒ですが、サンプルコ
version: '3' services: app: container_name: my_app build: ./docker ports: - 8880:80 volumes: - my_app_symfony:/var/www/html - ./docker/php/php.ini:/usr/local/etc/php/php.ini - ./docker/apache/my_app.conf:/etc/apache2/sites-enabled/my_app.conf depends_on: - mysql mysql: image: mysql:5.7 container_name: my_app_app_mysql environment: MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD MYSQL_DATABASE: $DB_NAME TZ:
どうしてSymfonyを? 既存システムを解析する案件が来る予定だったのでちょこちょこ調べた。 ざっくばらんなメモなので、通して読むよりトピック的に拾う方が正しい。 Symfonyに触れる環境を作る SymfonyCastsの「Charming Development in Symfony 5」をなぞるのが手取り早い。 「03. Route, Controllers&Responses!」までやると、とりあえず動くようになる。 Symfony解析時の基本的な流れ routing.ymlでルーティング情報を確認する Controllerに格納されているXxxController.phpでルーティングに対応する関数を確認する 関数内の処理を解析する フォルダパス Sample\SampleBundle ├─Controller // コントローラ。ルーティングに対応するのはここを参照。 ├─D
vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config. ぐぐってみるとこんなissueが発見された。 enableVueLoader does not include VueLoaderPlugin? · Issue #311 · symfony/webpack-encore · GitHub vue-loaderのv15は今のところwebpack-encoreのenableVueLoaderだけではうまくいかないようだ・・・。 v14を使え的なコメントもちらほらありましたが、v15を使いたい(なんとなくだけど。) まあエラーメッセージに「Make sure to include VueLoaderPlugin in
前のページの続きです。 2. Controller annotateとテンプレートの呼び出し3 )EC-Cube4でパラメータ付きでテンプレートを呼びだす 別のページを呼ぶ際に商品IDなどを付けて呼びだしたい時は良くあることです。 例えば、有る商品をクリックしたら、その詳細を表示するページに飛ぶなど。 方法は以下のページを参照 以下のコードを app/Customize/Controller に testController.phpで作成 <?php namespace Customize\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; # <-追加 use Eccube\Controller\AbstractController; use Sensio\Bundle\FrameworkExt
今回のTechCafeテーマ PHPer's NEWS !! PHPやWeb技術関連の最新情報・記事など、PHPerが聞きたいニュースをピックアップして紹介します!! "一緒に語り合う枠" の方はもちろん、"聞き専枠" の方も、チャットを使って意見交換・情報交換をしましょう! 特集:Symfony PHPTechCafe初の "Symfony 特集" です!! Symfonyは保守性やスケーラビリティが良いとされ、便利な「バンドル」機能なども注目です。 今回はSymfonyがどんなフレームワークなのか、どのように扱えばいいのかなど、基礎的な内容を抑えていきます! ShowNote https://hackmd.io/@E6hhS-xhQIqrpKokpl_yQQ/BJQqeXP_h ※内容が変更になる場合がありますので、ご了承ください。 過去の議題一覧 2023年度 2023年4月開催:「
この記事では、SymfonyとAngularを使用してシングルページアプリケーション(SPA)のフォーム機能をゼロから構築する方法を紹介します。 サーバーサイドでAPIを構築しフロントエンドでフォームを作成しAPI連携までを行います。 ただフォームを作るだけでは面白くないので、PokeAPIを使用してフォームに入力されたポケモンの名前を送信するとそのポケモンの画像を表示するアプリを作成します。 目次 1. 作成するもの 2. サーバーサイド(Symfony)の構築 2-1. Symfonyのインストールとパッケージ設定 2-2. APIエンドポイントの作成 2-3. PokeAPIクラスの作成 3. フロントエンド(Angular)の構築 3-1. Angularのインストール 3-2.コンポーネントとサービスの作成 3-3. フォームの実装(homeコンポーネント) 3-4. API呼び
PHPの標準機能でもアローラロコンをアーロンにできるのだが、SymfonyのString Componentというやつがちょっとおしゃれな文字列演算を提供しているので、せっかくなのでこれを使ってみよう。 Symfony String Componentとは だいたいドキュメントを見ればわかる。 Symfony StringはByteString CodePointString UnicodeStringという3種類のクラスを用意しているが、基本はUnicodeStringが扱う書記素(grapheme)という単位で扱うのがいいだろう。 Stringオブジェクトを作る 普通の文字列値をStringオブジェクトに変えるにはnewで新しいインスタンスを作る方法とヘルパー関数を使う方法がある。 まあ、こだわりがなければヘルパー関数を使っておくと見ためがすっきりするだろう。 <?php use fu
$account = AccountTable::getInstance()->findOneByLoginIdAndStatus($login_id, "on"); $account = Doctrine::getTable("Account")->findOneByLoginIdAndStatus($login_id, "on"); $account = AccountTable::getInstance()->findOneBy(array('login_id' => $login_id, 'status' => "on")); $account = Doctrine::getTable("Account")->findOneBy(array('login_id' => $login_id, 'status' => "on")); $q = AccountTable::getInst
Requestオブジェクトに触れる機会は多く、様々な情報を取得することができる。 ここではリクエストパラメータに関する扱いをまとめる。 (導入)Requestオブジェクトを扱う Symfonyのコントローラではアクションの引数とすることで、簡単に Request オブジェクトを扱うことができる。 <?php // ... use Symfony\Component\HttpFoundation\Request; // ... public function index(Request $request) { $page = $request->query->get('page', 1); } リクエストパラメータへのアクセス GETおよびPOSTのリクエストパラメータにアクセスするには、それぞれ以下のようにする。 <?php // リクエストパラメータfooの値を取得 // GET $re
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く