2. class Me
{
public $myName = “Ács János”;
public $myJob = “Software engineer @ Inviqa”;
public $myTwitter = @acsjani;
public $myMail = acsjani@gmail.com;
public function getProjectsIveWorkedOn()
{
return array(
'acnestudios.com',
'dreams.co.uk',
'smythson.com'
);
}
}
3. Mi is az a Magento?
● Open Source
● eCommerce platform
● Zend framework (PHP) alapú
● Készítette: Varien (most Magento Inc)
● OOP, MVC, EAV
● Enterprice és Community edition
4. Enterprise vs Community
● Commercial license ● OSL v3.0
● Magento Support
● Private sales
● Magento forums
● Több store ● Alap funkciók
● Store staging / merging
● Gift card
● 0 USD / év
● Store credit (reward)
● Store szintű ACL
● Admin log
● SOLR integráció
● 14 420 USD / év
5. Na de fejlesztői szempontból?
● MVC pici változtatásokkal, hozzáadott elemekkel
● EAV adatstruktúra a termékekhez és bármihez
● Event Listener pattern
● A modelleknél a Factory, Singleton, Registry,
Iterator, Object pool, Prototype, Lazy loading,
Service locator patterneket implementálták
● Konfiguráció alapú architektúra
● Működő és tesztelt order flow, termék modell,
cms és még sok más
6. MVC (Model View Contoller) bővítések
● Layout configuráció - Minden 'action'-höz xml tartozik
amely leírja, mit kell megjeleníteni
● Blokkok (Block) - Ezek a model és a view közé
ékelődött megjelenítést segítő elemek. Egy oldal
mindig blokkokból épül fel, ezek a layout xmlben
definiálhatók
● Rewrite rendszer - A Magento minden default
osztálya kiterjeszthető és a rewrite segítségével
sajátra cserélhető. A rewrite-ot az adott modul saját
config xmljében definiálhatjuk.
7. EAV
● Entity (entitás)
● Egy Magento adat elemet reprezentál, termékek
(product), rendelések (order), kategóriák
(category), felhasználók (customer)
● Attribute (attribútum)
● Egy entitás saját paramétereit reprezentálja, pl
termék esetén: név, sku, méret, stb.
● Value (érték)
● Egy attribútum értékei, lehet integer, float, varchar,
text, date
8.
9.
10. Magento alap modulok
Saját modulok helye
Modul névtér
Modul neve
Blokkok
Kontrollerek
Config xml fileok helye
View helper osztályok
Model osztályok
Db migrációs upgrade
szkriptek helye
11. File szerkezet
● Kötött, minden előre meghatározott helyre
kerül
● Osztály elnevezési konvenció
Szegedtech_Catalog_Model_Product_Type_Configurable
app/code/local/Szegedtech/Catalog/Model/Product/Type/Configurable.php
$configrableProduct =
Mage::getModel('szegedtech_catalog/product_type_configurable');
12. Mage model
Mage_Core_Model_Abstract vagy Varien_Object
classok valamelyikét terjeszti ki, ha szükséges
Legtöbbször tartozik hozzá egy Resource model
is, amely az adatbázissal valo kommunikációt
végzi.
Létezését definiálni kell a config.xml -ben
19. Mit csinálunk mi pontosan?
A mi dolgunk a Magento testreszabása a
kliens egyedi igénye szerint.
Ez magában foglalja a teljes skin készítést,
az alapértelmezett funkciók módosítását,
új modulok implementálását, third party
modulok telepítését és módosítását, új
fizetési módok integrálását, stb...
20. Enterprise szintű webfejlesztés
Scrum metodológia (napi standup, sprintek, story
pontok, retrospective)
Unit teszt készítése minden módosításhoz (
https://github.com/inviqa/Mage-Test)
100% code coverage a cél :)
Continuous Integration alkalmazása a fejlesztés alatt
napi buildekkel
Mess detector, Code sniffer alkalmazása
SOLID principle
21.
22. Inviqa launch in Szeged
2013. március 7. (csütörtök) 18:00
IH (www.ihrendezvenykozpont.hu)
Előadások
- The Magento Way, modul fejlesztés és demo (Molnár Zsolt)
- Continuous Integration, miért és hogyan? (Nagy Norbert)
- Get to know Inviqa better (Yair Spitzer)
kaja, sör, stb.
tinyurl.com/inviqaszeged
S SRP Single responsibility principle an object should have only a single responsibility. O OCP Open/closed principle “ software entities … should be open for extension, but closed for modification”. L LSP Liskov substitution principle “ objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”. See also design by contract. I ISP Interface segregation principle “ many client-specific interfaces are better than one general-purpose interface.”[5] D DIP Dependency inversion principle one should “Depend upon Abstractions. Do not depend upon concretions.”[5] Dependency injection is one method of following this principle. (Rigidity, Fragility, Immobility, Viscosity)