Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
EC-CUBE3コードリーディング #1
Search
amidaike
February 03, 2016
Programming
5.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EC-CUBE3コードリーディング #1
amidaike
February 03, 2016
More Decks by amidaike
See All by amidaike
EC-CUBE3勉強会新しいデザインを作成してみよう
amidaike
0
490
EC-CUBE 3.0勉強会
amidaike
1
1k
EC-CUBE3プラグイン勉強会
amidaike
0
490
EC-CUBE3デザイナー向け勉強会 #4
amidaike
0
330
EC-CUBE3コードリーディング #5
amidaike
1
1.6k
EC-CUBE3デザイナー向け勉強会 #1
amidaike
0
310
EC-CUBE3デザイナー向け勉強会 #3
amidaike
1
240
EC-CUBE3コードリーディング #4
amidaike
0
1.3k
EC-CUBE3デザイナー向け勉強会 #2
amidaike
1
2.8k
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.6k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
420
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
260
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
580
Agents on Rails - Rails at Scale 2026
irinanazarova
0
310
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
370
iOSDC2026登壇資料.pdf
riofujimon
0
200
カツオ、ご期待ください
suneo3476
0
130
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
370
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
320
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
5.4k
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
How to train your dragon (web standard)
notwaldorf
97
6.8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
A better future with KSS
kneath
240
18k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
480
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
Designing for Timeless Needs
cassininazir
1
510
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
EC-CUBE3ίʔυϦʔσΟϯά #1 EC-CUBEؔϢʔβάϧʔϓ 2016-01-20
ࣗݾհ גࣜձࣾΩϡʔϧ ࢁଜ ਗ਼࢙ EC-CUBE3ͷίϛολʔͯ͠·͢ @k-yamamura
࣍ 1. EC-CUBE3ͷհ 2. ༻͍ͯ͠ΔϑϨʔϜϫʔΫ 3. EC-CUBE3ͷσΟϨΫτϦߏ 4. σʔλϕʔεߏʹ͍ͭͯ 5.
։ൃ࣌ͷҙ
1.EC-CUBE3ͷհ
EC-CUBE3ͷհ • 20157݄1ʹ7ͿΓͷϝδϟʔόʔδϣϯΞοϓ • γεςϜ෦ͷେ෯ͳݟ͠ Symfony2ίϯϙʔωϯτͰ͋ΔSilexͷ࠾༻ Bootstrap3ͷ࠾༻ Smarty͔ΒTwigͷPHPςϯϓϨʔτมߋ Doctrineͱ͍͏ORϚούʔͷ࠾༻ •
ϨεϙϯγϒσβΠϯରԠ • ϓϥάΠϯػߏͷ৽
EC-CUBE3ͷհ • GitHubΛͬͨࠓ࣌ͷ։ൃ https://github.com/EC-CUBE/ec-cube • TravisCIɺAppVeyorɺScrutinizerͷ֎෦αʔϏεΛ͍ίʔ υ࣭Λ୲อ ˠPullRequest͞ΕΔͱͦΕͧΕࣗಈతʹ࣮ߦ͞Ε·͢ɻ·ͩ ·ͩςετέʔεΓ͍ͯ·ͤΜ͕ɾɾɾ •
PSRʹ΄΅४ڌͨ͠ίʔυ։ൃ ͍ͭͰPull Request͓͓ͪͯ͠Γ·͢ʂ
2.༻͍ͯ͠ΔϑϨʔϜϫʔΫ
༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Symfony2ʹ͍ͭͯ Symfony2ͱMVCελΠϧͷྲྀΕΛ౿ऻͨ͠ϑϨʔϜ ϫʔΫͰ͢ɻ • ҰൠతͳWebΞϓϦέʔγϣϯͷಈ࡞ ᶃϦΫΤετ ᶅϨεϙϯε ᶄॲཧ
༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Symfony2ͷಈ࡞ ᶃϦΫΤετ ᶅϨεϙϯε ᶄॲཧ ϦΫΤετ ΦϒδΣΫτ )551 Χʔωϧ
Ϩεϙϯε ΦϒδΣΫτ
༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Symfony2ͷߏཁૉ @see https://speakerdeck.com/hidenorigoto/symfonywoxuan-buli-you-tosymfonyben-shao-jie
༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Twigʹ͍ͭͯ PHPςϯϓϨʔτΤϯδϯͰ͋ΓɺSymfony2Λߏ͢Δඪ४ύο έʔδͷҰ෦Ͱ͢ɻ(EC-CUBE2ܥͰSmartyΛ࠾༻) • Twigͷಛ 1. ߴ :
࠷దԽ͞ΕͨPHPίʔυͰςϯϓϨʔτΛίφϐϧ͠ɺ ௨ৗͷPHPίʔυʹൺͯΦʔόʔϔουΛ࠷খݶʹݮগ 2. ηΩϡΞ : ࣗಈΤεέʔϓػೳ৴པ͞Ε͍ͯͳ͍ςϯϓϨʔ υίʔυΛධՁ͢ΔͨΊͷsandboxϞʔυΛඋ͑Δ 3. ॊೈੑ : ಠࣗͷΧελϜλάϑΟϧλΛఆٛ͢Δ͜ͱ͕Մೳ
༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Doctrineʹ͍ͭͯ DoctrineORMπʔϧͰ͋ΓɺσʔλϕʔεͷநԽૢ࡞͢ΔͨΊͷPHPϥΠϒϥ ϦʔͰ͢ɻ Symfony2ͰσʔλϕʔεͱσʔλΛΓऔΓ͢ΔͷʹɺDoctrine ORMΛ͍·͢ɻ ORMͱDBͷσʔλͱPHPͷΫϥεΛϚοϐϯάͯ͠ม͢Δٕ๏ͷ͜ͱͰ͢ɻ
• ϓϥΠϚϦΩʔͱͯ͠idΛ࣋ͪɺDoctrineΛ௨ͯ͠DBͱϚοϐϯά͢ΔPHPΦϒδΣ ΫτΛΤϯςΟςΟͱݺͼ·͢ɻ
3.EC-CUBE3ͷσΟϨΫτϦߏ
EC-CUBE3ͷσΟϨΫτϦߏ • EC-CUBE3ͰSilexϑϨʔϜϫʔΫΛ࠾༻͍ͯ͠Δͨ Ίɺ2ܥ͔Βେ෯ʹσΟϨΫτϦߏ͕มԽ • Symfony2ͷσΟϨΫτϦߏΛࢀߟʹɺEC-CUBE3ಠ ࣗʹߏ(σΟϨΫτϦߏޙड़) • URLʹ.php͕ແ͘ͳΓγϯϓϧͳURLʹมߋ •
ެ։σΟϨΫτϦʹ͍ͭͯ2ܥΛ΄΅౿ऻ
EC-CUBE3ͷσΟϨΫτϦߏ • /ECCUBEROOT/src Լ͕ϓϩάϥϜຊମͱͳΓɺ phpϑΝΠϧtwigϑΝΠϧΛ ஔ
EC-CUBE3ͷσΟϨΫτϦߏ • /ECCUBEROOT/html ͕ެ։σΟϨΫτϦͱͳΓɺ ϦιʔεϑΝΠϧ(cssը૾ ϑΝΠϧʑ)Λஔ (֤σΟϨΫτϦͷઆ໌ޙड़)
EC-CUBE3ͷσΟϨΫτϦߏ • /ECCUBEROOT/app ԼઃఆϑΝΠϧϩάϑΝ Πϧ͕ஔ͞Ε͓ͯΓɺϓ ϥάΠϯʮPluginʯσΟϨΫ τϦԼͰ࡞
EC-CUBE3ͷσΟϨΫτϦߏ σΟϨΫτϦ໊ ػೳ໊ EccubeԼ ϕʔεͱͳΔApplication.php͕ଘࡏ͠ɺඞ ͣ͜ͷΫϥε͔Β࣮ߦ͞ΕΔ Application Application.phpͷΫϥεϑΝΠϧ͕֨ೲ Command ConsoleίϚϯυ༻Ϋϥε
Common ఆఆٛΫϥε Controller ίϯτϩʔϥʔΫϥε ControllerProvider URLϚοϐϯάఆٛؔ Doctrine Doctirine֦ுΫϥε Entity DB࿈ܞ༻EntityΫϥε Event FormΠϕϯτ༻Ϋϥε EventListner ΠϕϯτϦεφʔ༻Ϋϥε
EC-CUBE3ͷσΟϨΫτϦߏ σΟϨΫτϦ໊ ػೳ໊ Exception ۀΤϥʔΫϥε Form FormλΠϓΫϥε Plugin ϓϥάΠϯ༻ManagerΫϥε Repository
DBΞΫηε༻ϦϙδτϦΫϥε Resource doctrine༻dcmϑΝΠϧtwigϑΝΠϧ Security ύεϫʔυϋογϡ༻ΫϥεݖݶνΣο ΫΫϥε Service αʔϏεΫϥε ServiceProvider DIఆٛ༻Ϋϥε Twig Twig֦ு༻Ϋϥε Util ڞ௨ؔΫϥε
EC-CUBE3ͷσΟϨΫτϦߏ • ຊମଆͷ։ൃͷྲྀΕҎԼͷ௨Γ 1. Controller࡞ 2. ControllerProviderServiceProviderʹඞཁͳఆٛ ΛՃ 3. TwigϑΝΠϧ࡞
4. ඞཁͰ͋ΕFormType࡞ 5. ඞཁͰ͋Ε EntityΛ࡞ 6. ը໘֬ೝ
4.σʔλϕʔεߏʹ͍ͭͯ
σʔλϕʔεߏʹ͍ͭͯ • EC-CUBE2͔ΒEC-CUBE3ͷDBεΩʔϚͷݟ͠ʹ͋ͨΓORMͰѻ͍͍͢ܗࣜ ʹมߋ • EC-CUBE2͔ΒҎԼͷ༰Λݟ͠(v2.13Λର) ςʔϒϧ໊໋໊نΛఆΊͯमਖ਼Λ࣮ࢪ ར༻͍ͯ͠ͳ͍ςʔϒϧ/ΧϥϜͷআ ֎෦ΩʔͷՃ ϓϥάΠϯͰར༻͢Δςʔϒϧຊମ͔Β
• ෳ߹ओΩʔར༻ͤͣɺαϩήʔτΩʔΛར༻(ଟରଟআ͘) • ͨͩ͠ɺEC-CUBE2ܥͷΧϥϜ໊শɺσʔλܕݪଇมߋ͠ͳ͍
σʔλϕʔεߏʹ͍ͭͯ • ໋໊نͷϧʔϧ ল໊ུশͷഇࢭ : dtb_deliv → dtb_delivery ୯ܗʹมߋ :
dtb_products → dtb_product εωʔΫέʔεͰ໋໊ : dtb_class_category • ςʔϒϧʹछผʹΑΓϓϨϑΟΫεΛ͚ͭΔ Ϛελςʔϒϧ : mtb_hogehoge σʔλςʔϒϧ : dtb_hogehoge ϓϥάΠϯؔ࿈ : plg_hogehoge
σʔλϕʔεߏʹ͍ͭͯ • ֎෦ΩʔͷՃ dtb_product_class͔Βdtb_productʹproduct_idΛ֎ ෦Ωʔͱͯ͠ઃఆ • ϓϥάΠϯ͔Βຊମͷඪ४ςʔϒϧʹରͯ͠ΧελϚΠ ζඇਪ όʔδϣϯΞοϓ͕ࠔɺଞͷϓϥάΠϯͱͷڝ߹
σʔλϕʔεߏʹ͍ͭͯ • EC-CUBE3Λ։ൃ͢Δࡍʹػೳͷݟ͕͠ߦΘΕͨͨΊɺ2 ܥͰଘࡏ͍ͯͨ͠ෆཁͳςʔϒϧআ • 3ܥͰ৽ͨʹ৽ن࡞͞Εͨςʔϒϧଘࡏ͢Δ͕ɺػೳͷ ݟ͠ʹΑΓ৽ن࡞͞Εͨςʔϒϧ͕ຆͲͰ͋Γ2ܥ͔Β ಛʹมߋͳ͠ • 2ܥͱͷςʔϒϧൺֱҎԼͷURLΛࢀর
http://amidaike.hatenablog.com/entry/2015/11/05/141219
5.։ൃ࣌ͷҙ
EC-CUBE3Ͱ༻͍ͯ͠Δจࣈίʔυ • phpϑΝΠϧɺtwigϑΝΠϧؚΊͯ͢UTF-8(BOMແ) Ͱ࡞͍ͯͩ͘͠͞ɻ • σʔλϕʔε࡞࣌UTF-8Ͱ࡞͍ͯͩ͘͠͞ɻ MySQLͩͱ create database eccube
character set utf8;
ରԠϒϥβʹ͍ͭͯ OS ϒϥβ Windows (Windows7Ҏ߱) Internet Explorer10 Ҏ߱ Google Chrome
࠷৽൛ Firefox ࠷৽൛ Mac Safari ࠷৽൛ iOS(7Ҏ߱) Safari ࠷৽൛ Android(4.1Ҏ߱) ඪ४ϒϥβ ࠷৽൛
URLͷ֬ೝํ๏ $ php app/console router:debug +----------------------------------------+-----------------------------------------------------------+---------+ | Name | Path
| Pattern | +----------------------------------------+-----------------------------------------------------------+---------+ | admin_logout | /admin/logout | GET | | admin_login_check | /admin/login_check | | | logout | /logout | GET | | login_check | /login_check | | | user_data | /user_data/{route} | ANY | | homepage | / | ANY | | top | / | ANY | | index | / | ANY | | cart | /cart | ANY | | cart_add | /cart/add | POST | | cart_up | /cart/up/{productClassId} | ANY | | cart_down | /cart/down/{productClassId} | ANY | | cart_set_quantity | /cart/setQuantity/{productClassId}/{quantity} | ANY | | cart_remove | /cart/remove/{productClassId} | ANY | | cart_buystep | /cart/buystep | ANY | | contact | /contact | ANY | | contact_complete | /contact/complete | ANY | | entry | /entry | ANY | | entry_complete | /entry/complete | ANY | | entry_activate | /entry/activate/{secret_key} | ANY | | forgot | /forgot | ANY | | forgot_reset | /forgot/reset/{reset_key} | ANY | | block_category | /block/category | ANY | php app/console router:debug
σόοάϞʔυͷ༗ޮԽ • ௨ৗ//index.phpͰΞΫηε͍ͯ͠ΔURLΛ/index_dev.phpʹมߋͯ͠ΞΫηε͢Δ͜ͱʹΑΓɺtwig ϑΝΠϧ͕Ωϟογϡ͞ΕͣʹσόοάϞʔυ͕༗ޮʹͳΓ·͢ɻ ˞EC-CUBE3.0.8͔Βdump༻ϥΠϒϥϦΛಋೖͨ͜͠ͱʹΑΓɺύοέʔδ൛ͩͱ index_dev.php ͕ͦ ͷ··ͩͱ͑·ͤΜɻindex_dev.php Λ͑ΔΑ͏ʹ͢ΔͨΊʹEC-CUBEσΟϨΫτϦԼͰɺҎ
ԼͷίϚϯυΛೖྗ͍ͯͩ͘͠͞ɻ curl -sS https://getcomposer.org/installer | php Λ࣮ߦޙɺ php composer.phar update symfony/var-dumper symfony/debug-bundle Λ࣮ߦ͍ͯͩ͘͠͞ɻ(3.0.9͔Βؚ·ΕΔΑ͏ʹͳΓ·͢) http://localhost/index_dev.php • You are not allowed to access this file. Check index_dev.php for more information.ͱΤϥʔ͕දࣔ͞Ε Δ߹ɺindex_dev.phpΛ։͖ɺΞΫηεݩͷIPΛҎԼͷྻʹՃ͍ͯͩ͘͠͞ɻ $allow = array( '127.0.0.1', 'fe80::1', '::1', );
TwigΩϟογϡͷআ • ຊ൪ಋೖޙʹจݴมߋͳͲ͕ൃੜͨ͠߹ɺTwig Ωϟογϡ͕ޮ͍͍ͯΔͨΊTwigϑΝΠϧΛมߋͯ͠ ө͞Ε·ͤΜɻมߋ༰Λөͤ͞ΔͨΊʹɺ /ECCUBEROOTE/app/cache/twig σΟϨΫτϦΛআ͍ͯͩ͘͠͞ɻ·ͨɺ php app/console cache:clear
ͱ࣮ߦͯ͠ΩϟογϡϑΝΠϧΛআ͍ͯͩ͘͠͞ɻ
PostgreSQLͱMySQLͷҧ͍ • EC-CUBE3DoctrineΛ͍ͬͯΔͨΊɺPostgreSQLͱ MySQLͷҧ͍ΞϓϦ͔Βͷ؍ͰݟΔͱͲͪΒΛͬͯ ҧ͍ແ͠ ͨͩ͠ɺPosgreSQLͱMySQLͰauto incrementͷλΠϛϯ ά͕ҟͳΔͨΊҙ͕ඞཁ ˠMySQLflushΛ͔ͯ͠ΒͰͳ͍ͱidͷऔಘෆՄ •
ύϑΥʔϚϯεͷ؍ͰΈΔͱαʔόڥʹґΔͱ͜Ζ͕େ ͖͍ͨΊɺ͕ࣗಘҙͱ͢ΔํΛ͑ྑ͍
EC-CUBE3Ξοϓσʔτ࣌ͷDBҙ • EC-CUBE3͔ΒຊମͷόʔδϣϯΞοϓʹͳ͍ɺDBͷόʔδϣϯΞοϓ migrationϑΝΠϧΛͬͯΞοϓσʔτՄೳ ˠsrc/Eccube/Resource/doctrine/migrationԼʹଘࡏ͢ΔϑΝΠϧΛݩʹ migration͕࣮ߦ͞ΕΔ • ຊମΞοϓσʔτʹͳ͍DBͷมߋ͕ൃੜͨ͠߹ɺ http://υϝΠϯ/install.php/migration Λ࣮ߦ͢Δ͜ͱͰɺmigration͕࣮ߦ͞ΕDB͕࠷৽Խ͞ΕΔ
• Πϯετʔϧ࣌doctrine_migraion_versionsͱ͍͏ςʔϒϧ͕࡞͞ΕΔ͕ɺ migrationཧ༻ςʔϒϧͱͯࣗ͠ಈతʹ࡞͞ΕΔςʔϒϧͷͨΊ৮Βͳ͍͜ͱ
EC-CUBE3Ξοϓσʔτ࣌ͷDBҙ • ϓϥάΠϯ͔Βຊମͷςʔϒϧʹରͯ͠ͷΧελϚΠζඇਪ ˠ࣮ݱ͢ΔͨΊʹϓϥάΠϯΠϯετʔϧ࣌ʹϚΠάϨʔγϣϯ ػೳΛͬͯϓϥάΠϯ༻ͷςʔϒϧΛ࡞ͯ͠ѻ͏ͷ͕·͍͠ • mtb_constants͕ແ͘ͳΓɺΘΓʹconstant.ymlΛ༻͢Δ͜ͱ ʹͳ͕ͬͨɺݱࡏEC-CUBE3Ͱ༻͞Ε͍ͯͳ͍߲ଘࡏ͢Δͨ Ίɺকདྷ༻͞Ε͍ͯͳ͍߲আ͞ΕΔՄೳੑ͋Γ •
༨ஊͰ͕͢ɺEC-CUBE2ܥ͔ΒEC-CUBE3ͷσʔλϕʔεҠߦ πʔϧݱঢ়ఏڙ༧ఆͳ͠
։ൃ࣌ͷࢀߟϖʔδ • GitHubWiki https://github.com/EC-CUBE/ec-cube/wiki • GitHubPages http://ec-cube.github.io • Qiitaͷهࣄ http://qiita.com/tags/EC-CUBE3