Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EC-CUBE3コードリーディング #1
Search
amidaike
February 03, 2016
Programming
5.8k
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
990
EC-CUBE3プラグイン勉強会
amidaike
0
480
EC-CUBE3デザイナー向け勉強会 #4
amidaike
0
330
EC-CUBE3コードリーディング #5
amidaike
1
1.5k
EC-CUBE3デザイナー向け勉強会 #1
amidaike
0
310
EC-CUBE3デザイナー向け勉強会 #3
amidaike
1
230
EC-CUBE3コードリーディング #4
amidaike
0
1.3k
EC-CUBE3デザイナー向け勉強会 #2
amidaike
1
2.8k
Other Decks in Programming
See All in Programming
Webフレームワークの ベンチマークについて
yusukebe
0
200
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
450
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
250
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
340
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.8k
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
280
Contextとはなにか
chiroruxx
1
390
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
270
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
260
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
200
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
The Cult of Friendly URLs
andyhume
79
6.9k
sira's awesome portfolio website redesign presentation
elsirapls
0
290
The Limits of Empathy - UXLibs8
cassininazir
1
390
Site-Speed That Sticks
csswizardry
13
1.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
Building AI with AI
inesmontani
PRO
1
1.1k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Code Reviewing Like a Champion
maltzj
528
40k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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