The right tools for the right job (or: surviving Magento 2 coding)

25

Transcript of The right tools for the right job (or: surviving Magento 2 coding)

Page 1: The right tools for the right job (or: surviving Magento 2 coding)
Page 2: The right tools for the right job (or: surviving Magento 2 coding)

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

The daily work of a [Magento 2] developer consists of two main job types

Debuggingexisting features

Creatingnew features

Your code 3rd party’s(or core) code

A B

Page 3: The right tools for the right job (or: surviving Magento 2 coding)

We will focus on this

Debuggingexisting features

Creatingnew features

Your code 3rd party’s(or core) code

A B

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 4: The right tools for the right job (or: surviving Magento 2 coding)

A SHORT HINT ON: CREATING FEATURES

You will need these thingies:§ PHPStorm IDE§ Vagrant (or Docker ?)§ GIT§ Magicento2§ Pestle§ MSP CodeMonkey

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 5: The right tools for the right job (or: surviving Magento 2 coding)

A SHORT HINT ON: CREATING FEATURES

Pestle, Magicento 2 and MSP CodeMonkey because:

§ Magento 2 requires a lot of boilerplate code

§ A typo is always lurking somewhere

§ Your time is not free

§ Magento 2 is not always DRY compliant

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 6: The right tools for the right job (or: surviving Magento 2 coding)

A SHORT HINT ON: CREATING FEATURESExample of code complexity: Magento 1 vs. Magento 2

Magento 1 – DB Models:§ Model§ ResourceModel§ Collection§ Install / Upgrade scripts§ config.xml

Magento 2 – DB Models:§ Model§ ResourceModel§ Collection§ Install / Upgrade scripts§ Repository§ RepositoryInterface§ ManagementInterface§ DataInterface§ Dependency Injection§ Getters / Setters in DataInterface§ API Preferences

Total involved files: 4-5 Total involved files: 8-9

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 7: The right tools for the right job (or: surviving Magento 2 coding)

A SHORT HINT ON: CREATING FEATURES

MSP CodeMonkey can create a whole PSR-2 compliant DB model source code with API, Interfaces, getters and setters. Just typing:

~$ bin/magento codemonkey:crud My_Module MyModelName my_sql_table

Magicento 2 and Pestle can create controllers, modules, plugins, observers and lotsof other coding entities in few clicks.

Your client does not always understand how complex this job is!So make it as simple as possible for you because you will not be paid for this!

REMEMBER

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 8: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING

Your code 3rd party’s(or core) code

DEBUGGING & REVERSE ENGINEERINGare the actual 99% work of a developer

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 9: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES

Common scenario when you’re debugging your code:

§ You do not know where the broken piece of code may be.

§ It is very hard to let the client understand that debugging is part

(actually: the most) of developing, so:

§ You probably do not have any of the project’s budget left;

§ Plus, you have a very short time to fix it!

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 10: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES

Common scenario when you’re debugging 3rd party’s code:

§ You have no clue about the how the work’s engineered.

§ You still do not know where the broken piece of code is.

§ You hope the programmer who worked on that code before you did not

touch the core.

§ The programmer who created that feature is now probably on permanent

vacation and/or does not speak a single word of your language!

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 11: The right tools for the right job (or: surviving Magento 2 coding)

HOPE IT’S NOT A MESS OF

SPAGHETTI CODE

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

“I’ve seen PHP code you people wouldn’t believe…”

Page 12: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURESDebugging process can be tricky in Magento 2.

Magento 2 has lots of new ways to intercept and change the standard core behaviour...

(I mean without changing the core! Do not try this at home!)

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Magento 1 rewriting tools

§ Rewrites

§ Routes hijacking

§ Observers

§ Layout updates

Magento 2 rewriting tools

§ Stackable preferences

§ Routes hijacking

§ Observers

§ Layout updates

§ Stackable plugins (after, before, around)

§ Extension attributes

§ Modifiers pool

Page 13: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES

FINDING THE PIECE OF CODE YOU NEED CAN BE OFTEN CHALLENGING

AND TIME CONSUMING.

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 14: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES

So the hard part is simply

FIND SOME PIECE OF CODE DOING SOMETHING SOMEHOW SOMEWHERE

and, once found

FIX SOMETHING BROKEN SOMEWHERE WITHSOME THING YOU WILL DO SOMEHOW

As easy as pie… isn’t it?

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 15: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES

§ PhpStorm as IDE

§ MSP DevTools

§ To find out where the code is

§ PHP Xdebug

§ To find out what’s wrong with the code

§ GIT bisect

§ To find out when you broke it

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 16: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES: MSP DEVTOOLS

§ Magento 1 & Magento 2 support

§ Free github project

§ Chrome extension

§ Chrome inspector integration

§ PHPStorm integration

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 17: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES

MSP DevTools allows to inspect:

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

§ Blocks

§ Observers

§ Plugins

§ Preferences

§ Design

§ UI Components

§ SQL queries

§ Profiler results

§ ...

Page 18: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES: PHP X-DEBUG

§ Suspend code execution

§ Inspect variables

§ Log results

§ Runtime variables value change

§ PHP Storm integrates it

§ You can do the same with “var_dump”, “print_r” and “echo”,

but everytime you do that, a programmer dies somewhere!

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 19: The right tools for the right job (or: surviving Magento 2 coding)
Page 20: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES: GIT BISECT

A typical customer’s bug report is like:

If you manage to understand what is actually broken you can use GIT bisect.

So you just need to know:

§ what the broken features is and

§ when it was working for the last time.

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

“Yesterday all was working on the website, today nothingworks! Fix it!!11!1!!”

Page 21: The right tools for the right job (or: surviving Magento 2 coding)

DEBUGGING FEATURES: GIT BISECT

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Works like this

Page 22: The right tools for the right job (or: surviving Magento 2 coding)
Page 23: The right tools for the right job (or: surviving Magento 2 coding)

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

Page 24: The right tools for the right job (or: surviving Magento 2 coding)

THE RIGHT TOOLS FOR THE RIGHT JOB (OR: SURVIVING MAGENTO 2 CODING)

#mm17it|RiccardoTempesta

THANK YOU!

KEEP CALM AND

I WILL ANSWER YOUR QUESTIONS

Page 25: The right tools for the right job (or: surviving Magento 2 coding)