Post on 15-Apr-2017
OXIDESHOPOVERVIEWOFCHANGESINV6
WHO?EdvinasAleksejonokas
Softwaredeveloper/architect|OXIDeSalesAG
SYSTEMREQUIREMENTS
SYSTEMREQUIREMENTS|WHAT?PHP
Supportedversions:5.67.0
Noencoders/loadersrequired:ZendGuardIonCube
Composer
SYSTEMREQUIREMENTS|WHAT?MYSQL
Supportedversions:5.55.6(# )5.7
79203
COMPOSER
COMPOSER|WHAT?
COMPOSER|WHAT?NEWREQUIREMENTphpcomposer-setup.phpcomposerinstall
COMPOSER|WHY?BENEFITS#1/5
InstallnecessaryeShopedition(CE/PE/EE)InstallnecessaryOXIDcomponents
ThemesModulesDemodata
COMPOSER|WHY?BENEFITS#2/5
Installnecessary3rdpartycomponentsdoctrine/dbalphpmailersmarty...
COMPOSER|WHY?BENEFITS#3/5
ProvidePSR-4compatibleautoloaderSupportallnecessary3rdpartycomponentsSupportneweShopcorenamespaces:\OxidEsales\EshopCommunity\OxidEsales\EshopProfessional\OxidEsales\EshopEnterprise
COMPOSER|WHY?BENEFITS#4/5
ProvidecomfortableeShopmaintenance:InstallfullyfunctionaleShop(batteriesincluded)Updateallcomponentson-demand
COMPOSER|WHY?BENEFITS#5/5
Forprojectdevelopers:Managecustom/other3rdpartycomponentsDefineadditionalnamespacesAddcomposerscripts
COMPOSER|HOW?INSTALLESHOP
composercreate-projectoxid-esales/oxideshop-project\<my_project_name>dev-b-6.0-ce
COMPOSER|HOW?ADD3RDPARTYCOMPONENT
composerrequiremonolog/monolog
COMPOSER|HOW?ADDOXIDESALESMODULE/THEME
composerrequireoxid-esales/paypal-modulecomposerrequireoxid-esales/flow-theme
COMPOSER|HOW?ADD3RDPARTYMODULE/THEME
composerrequirevendor_name/module_name-modulecomposerrequirevendor_name/theme_name-theme
COMPOSER|HOW?UPDATEALLPROJECTCOMPONENTS
composerupdate
COMPOSER|HOW?UPDATEESHOPCOREONLY
composerupdateoxid-esales/oxideshop-ce
COMPOSER|HOW?UPDATEALLESHOPCOMPONENTS
composerupdateoxid-esales/oxideshop-metapackage-ce
COMPOSER|HOW?DEFINECUSTOMNAMESPACES
"autoload":{"psr-4":{"MyVendor\\MyPackage\\":"./<path_to_src>/"}},
COMPOSER|HOW?DEFINEYOUROWNSCRIPTS
"scripts":{"oe:views:regenerate":"oe-eshop-factsoe-eshop-db_views_regenerate",..."custom":"<path_to_custom_script>"},
COMPOSER|WHERE?SINGLEFILE
<project_root>/composer.json
COMPOSER|WHERE?V5.3DEPRECATED
<project_root>/source/modules/composer.json
COMPILATION
COMPILATION|WHAT?EVERYTHINGINCLUDEDINONEPLACE
OXIDeShopCoreOXID/3rdparty:ModulesThemesComponents
COMPILATION|HOW?METAPACKAGES
Acompilationisdefinedbymeta-package:
oxideshop-metapackage-ceoxideshop-metapackage-peoxideshop-metapackage-ee
COMPILATION|HOW?USAGE
New:composercreate-project...oxid-esales/oxideshop-project
Existing<project_root>/source/modules/composer.jsoncomposerrequire...oxid-esales/oxideshop-metapackage-ce
COMPILATION|WHERE?DISTRIBUTION#1(COMPOSER)
Packagist( )Publicserviceforpublicpackagesoxid-esales/oxideshop-ceoxid-esales/paypal-moduleoxid-esales/flow-theme...
www.packagist.org
COMPILATION|WHERE?DISTRIBUTION#2(COMPOSER)Satis( )
Internalserviceforproprietarypackagesoxid-esales/oxideshop-eevisualcms-module...
packages.oxid-esales.com
COMPILATION|WHY?EASYTO...
composerinstall/create-projectFullyfunctionaleShop
composerupdateMigratetonewmajorversionofeShopGetthelatestpatchesforcoreandallcomponents
NAMESPACES
NAMESPACES|WHAT?NEWPSR-4DEFINEDFORINTERNALCLASSES
\OxidEsales\Eshop-VirtualNamespace\OxidEsales\EshopCommunity-CE\OxidEsales\EshopProfessional-PE\OxidEsales\EshopEnterprise-EE
NAMESPACES|HOW?COMPOSERAUTOLOADER
"autoload":{"psr-4":{"OxidEsales\\EshopCommunity\\":".../oxideshop-ce","OxidEsales\\EshopProfessional\\":".../oxideshop-pe","OxidEsales\\EshopEnterprise\\":".../oxideshop-ee",}}
NAMESPACES|HOW?BACKWARDSCOMPATIBLEBYCLASSMAP#1
isanaliasto
oxNew('oxArticle');
oxNew(\OxidEsales\Eshop\Application\Model\Article::class);
NAMESPACES|HOW?CLASSMAPS
InsideClassMapfile:'oxbase'=>...\Core\Model\BaseModel::class,'oxarticle'=>...\Application\Model\Article::class,'oxorder'=>...\Application\Model\Order::class,'details'=>...\Application\Controller\ArticleDetailsController::class,
NAMESPACES|HOW?CLEARNAMINGOFSUPPERCLASSES
oxSuperCfg->BaseoxView->BaseControlleroxUBase->FrontendControlleroxWidget->WidgetControlleroxAdminView->AdminControlleroxAdminDetail->AdminDetailsControlleroxAdminList->AdminListControlleroxBase->BaseModeloxList->ListModeloxI18n->MultiLanguageModel
NAMESPACES|HOW?BACKWARDSCOMPATIBLEBYCLASSMAP#2
Insideofmetadata.php
issameas
'oxorder'=>'<vendor>/<module_name>/models/order'
\OxidEsales\Eshop\Application\Model\Order::class=>'<vendor>/<module_name>/models/order'
EVENBETTER...
NAMESPACES|HOW?BACKWARDSCOMPATIBLEBYCLASSMAP#2
Insideofmetadata.php
issameas
'oxorder'=>'<vendor>/<module_name>/models/order'
\OxidEsales\Eshop\Application\Model\Order::class=>\MyVendor\MyModule\MyOrderClass::class
NAMESPACES|HOW?USAGEINMODULES
Createcomposer.jsonfileintherootofmoduleDefinenamespaceinuse:
Usecomposerrequiretoaddyourmodule
"autoload":{"psr-4":{"MyVendor\\MyModule":"../../../source/modules/myvendor/mymodule"}}
NAMESPACES|WHY?GENERAL
De-factostandardtomanagehierarchyofclassesHelpedtoseparateeShopeditionsinacleanwayNoneedtomaintaincustomauto-loaderGainperformance
NoneedtoscanfilesoneveryoxNewcall
NAMESPACES|WHY?VIRTUALNAMESPACE
\OxidEsales\Eshop
IntroducedforconvenienceMapscurrentactiveeShopeditionnamespace
DATABASE
DATABASE|TOPICSDBALInnoDBMigrationMySQL5.7UTF-8
DBAL
DATABASE|DBAL|WHAT?NEWDATABASEABSTRACTIONLAYER
ADOdblitedoctrine/dbalv2.5.4ORMexcluded!
DATABASE|DBAL|HOW?UPDATEDCLASSES
OxidEsales\EshopCommunity\Core:DatabaseProvider(oxDb)Database\Adapter\DatabaseInterfaceDatabase\Adapter\Doctrine\Database
DATABASE|DBAL|HOW?USAGE
DatabaseProvider::getDb()returnsDatabaseInterface:getOne,getRow,getCol,getAllselect,selectLimitexecutequote,quoteArraystartTransactioncommitTransactionrollbackTransaction
DATABASE|DBAL|HOW?SELECTVSEXECUTE
DATABASE|DBAL|WHY?ADOdbliteDoctrineDBAL
PopularandactivelymaintainedAllowstoswitchtodifferentdatabaseengine
Weliketohaveoptions!
INNODB
DATABASE|INNODB|WHAT?SWITCHTOINNODB
AlltableshavebeenconvertedtoInnoDB
DATABASE|INNODB|HOW?NOFULL-TEXTSEARCHLEFT
MigrationtoInnoDBRemovedallplacesincodewhichrequiredfull-textsearch
e.g.tagswasextractedinseparatemoduleUpdatedqueriestouseexplicitsorting
DATABASE|INNODB|WHY?NEWPOSSIBILITIES
UsetransactionsforalltablesRow-levellockingMaster-masterreplicationmodel
Linearwritescalee.g.Galeracluster
MIGRATIONS
DATABASE|MIGRATIONS|WHAT?Migration-SpecialSQLfiletoautomaticallyupdate
database
doctrine/migrations
DATABASE|MIGRATIONS|HOW?EXECUTION
composeroe:migration:run
DATABASE|MIGRATIONS|HOW?CREATION
MIGRATION_SUITE=<SUITE_NAME>\composeroe:migration:newCEPEEEPROJECT
DATABASE|MIGRATIONS|WHY?EASEOFUSE
AutomatemanualworkAbilitytomigratefromCE/PEandPE/EEUpgradeeShopAllowprojectdeveloperstoeasilyapplydatabasechanges
MYSQL5.7
DATABASE|MYSQL5.7|WHAT?ESHOPV6ISMYSQL5.7FRIENDLY
DATABASE|MYSQL5.7|HOW?CHANGEQUERIES
OuracceptancetestsuiteshowedproblematicplacesQuerieswereupdatedtorestoreoriginalbehavior
DATABASE|MYSQL5.7|WHY?KEEPUPWITHHOSTINGPROVIDERSInterestfromourclientsBecompatiblewithhostingprovidersBenefitfromoptimization&performancegains
UTF-8
DATABASE|UTF-8|WHAT?UTF-8ONLY
DATABASE|UTF-8|WHY?MULTI-LANGUAGESUPPORT
SupportmultiplelanguagesinonedatabaseBackwardscompatiblewithASCIINonoticeableperformancepenalty
DATABASEFEWMORENOTES
Master/slavehandlingwaschangedPossibletousenestedtransactionsoxDb->3methodwereremoved
EXTRACTEDMODULES
EXTRACTEDMODULES|WHAT?LISTOFREPOSITORIES
https://github.com/OXID-eSales:lexware_export_moduleextended_order_administration_modulestatistics_modulecaptcha_moduleguestbook_modulefacebook_modulepdf_invoice_moduletags_module
EXTRACTEDMODULES|WHAT?LISTOF3RDPARTYMODULES
Trustedshops
EXTRACTEDMODULES|WHY?STREAMLINEESHOPCORE
Removeharddependenciesonnon-essentialsitemsUpdateextractedmoduleson-demand
NoneedtowaitforeShopupdate
BACKWARDSCOMPATIBILITY
BC|WHAT?BesidesextractedcodeintomodulesTherearenomoreBCbreaksforexistingmodules!
BC|WHY?BECAUSEWEDOCARE!
NOTES
VMOurVMhasbeenupdatedtoworkwithV6out-of-the-box
PHPupgradedto5.6For5.3version-fewnotesinreadme
DOCUMENTATION
Shortlink:
http://oxid-eshop-developer-documentation.readthedocs.io/en/latest/
http://tinyurl.com/oxid-dev-doc
SUMMARY
SUMMARYNewrequirementsComposerintegrationCompilationNamespaces
Classnames,classmap,usageinmodulesDatabasechanges
Doctrine,InnoDB,Migrations,MySQL5.7ExtractedModulesBackwardscompatibilityVM&Documentation
DETAILEDTALKS
DETAILEDTALKSComposerroleinOXIDeShop6.0MantasVaitkūnas(EN)
UpdatetoeShop6.0-WhatdoIhavetowatchoutfor?GregorHyneck(DE/EN)
ThenewdatabasehandlinginOXIDeShopv6.0RobertBlank(DE/EN)
ONEMORETHING...
DOCKER|WHAT?PROTOTYPE
Eachcomponenthasit'sowncontainerMajoritybeingfromoriginalvendors
Eachtoolcanbeusedasanad-hoccommandOXIDeShopasdatavolume
Downloadexisting/configuredeShop
DOCKER|WHY?MANYREASONS...
SmallfootprintBlazingfast!Developerfriendly
DockerforMacDockerforWindows
AbilitytouseCloudservicesMobilityHelpstoautomatethings...
DOCKER|WHEN?WHERE?DecemberBlogpostNewgithubrepositories
DOCKER|DEMO
QUESTIONS?
THANKYOU!