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.9k
Other Decks in Programming
See All in Programming
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.4k
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
240
SODA - FACT BOOK(JP)
sodainc
1
40k
ChromeでローカルLLM
ryu1013
0
200
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
310
Next.js: The final boss of Web Performance
guaca
0
390
ActionController meets Protocol Buffers
sorah
1
790
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
330
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
230
小さなアプリを作って公開するまで
onozaty
0
140
Performance Optimization With LLMs
xleitix
0
250
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
1k
Visualization
eitanlees
153
17k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
520
Paper Plane
katiecoart
PRO
5
55k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
660
Believing is Seeing
oripsolob
1
270
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
360
How STYLIGHT went responsive
nonsquared
100
6.4k
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