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
480
EC-CUBE 3.0勉強会
amidaike
1
980
EC-CUBE3プラグイン勉強会
amidaike
0
480
EC-CUBE3デザイナー向け勉強会 #4
amidaike
0
320
EC-CUBE3コードリーディング #5
amidaike
1
1.5k
EC-CUBE3デザイナー向け勉強会 #1
amidaike
0
300
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
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
730
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
440
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
410
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
310
dRuby over BLE
makicamel
2
320
Claspは野良GASの夢をみるか
takter00
0
170
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
590
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.6k
GitHub Copilot CLIのいいところ
htkym
2
1.3k
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
240
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
550
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Producing Creativity
orderedlist
PRO
348
40k
The SEO Collaboration Effect
kristinabergwall1
1
480
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Everyday Curiosity
cassininazir
0
220
Leo the Paperboy
mayatellez
7
1.8k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
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