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
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
160
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
580
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
380
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
210
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
170
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
140
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Workers Cache を知る
syumai
0
300
Security issues being discussed on Web Platforms
petamoriken
0
1.3k
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
270
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
360
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Building Flexible Design Systems
yeseniaperezcruz
330
41k
4 Signs Your Business is Dying
shpigford
187
23k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
The Curse of the Amulet
leimatthew05
3
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Making the Leap to Tech Lead
cromwellryan
135
10k
Code Reviewing Like a Champion
maltzj
528
40k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
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