Let’s move to outer space,
beyond
Joomla!
Developing software not easy
improved a bit over the years:
Waterfall
Waterfall vs Agile
iterations (sprints)
Waterfall vs Agile
DDDTDDBDD
Sapir–Whorf hypothesis
Linguistic relativity:
Structure of a language affects the ways in which its respective speakers conceptualize their world.
голубой
Wilhelm von Humboldt Franz Boas Edward Sapir
Nelleke Verhoeff, Red Cheeks Factory,
Nelleke Verhoeff, Red Cheeks Factory,
DDD
ubiquitous language:
using the language of the domain you are modeling
TDDTests afterwards are boring, I like to create new things!
TDDTests first!
Some recent TDD critics
•architecture destroyed by unit-level-tests•easy to measure doesn’t mean it’s important
David Heinemeier Hansson (‘DHH’)http://www.confreaks.com/videos/3315-railsconf-keynote
James Coplien (‘Cope’)www.rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf
“Is TDD dead?”. Four discussions on video with Martin Fowler Kent Beck and DHHhttp://martinfowler.com/articles/is-tdd-dead/
BDD
Dan Northhttp://dannorth.net/introducing-bdd/
Functional testing
Seleniumhttp://docs.seleniumhq.org/
Selenium in PHPUnithttp://phpunit.de/manual/current/en/selenium.html
Acceptence testing
Behathttp://behat.org/
Behat
•based on Cucumber (Gherkin language)•given - when - then
Behat: define features
steps suggestions
define steps
Minkhttp://mink.behat.org/
Codeceptionhttp://codeception.com/
No Gherkin-language, but PHP (new WebGuy)
CreateReadUpdateDelete
Let’s Create, Read,
Update and Delete
...an employee
Create, Read,
Update and Delete
...an employee
Create, Read,
Update and Delete
...an employee
Create, Read,
Update and Delete
...an employee
Create, Read,
Update and Delete
...an employee
???
I’d rather Hire
or Fire
an employee ...
Mapping some knight-objects ...
... to their proper tables
Interfaces to build a CMS
JCR & JackRabbithttp://en.wikipedia.org/wiki/Content_repository_API_for_Java http://jackrabbit.apache.org/
PHPCR, Jackalope & Midgard2https://github.com/phpcr/phpcr http://jackalope.github.io/ https://github.com/jackalope/jackalope-doctrine-dbal http://bergie.iki.fi/blog/midgard2_phpcr_provider_hits_1-0/
Symfony CMF http://cmf.symfony.com/ http://docs.doctrine-project.org/projects/doctrine-phpcr-odm/en/latest/
Some NoSQL
Document-db: MongoDB http://www.mongodb.org/ https://doctrine-mongodb-odm.readthedocs.org/en/latest/
Graph-db: Neo4jhttp://www.neo4j.org/develop/php https://github.com/lphuberdeau/Neo4j-PHP-OGM
Hybrid graph-document-db: OrientDB http://www.orientechnologies.com/orientdb/ http://www.doctrine-project.org/projects/orientdb-odm.html
CQRSCommand Query Responsibility Segregation http://martinfowler.com/bliki/CQRS.html https://github.com/beberlei/litecqrs-php
DCIData-Context-Interaction
To support an object style of thinking that is close to peoples’ mental models,
rather than the class style of thinking that overshadowed object thinking early in the history
of object-oriented programming languages.
http://fulloo.info/Documents/ mailinglist: https://groups.google.com/forum/#!forum/object-composition
for instance:
•backbone.js•ember.js•angular.js
(not for SEO)
Client-side MVC