{"id":498,"date":"2004-12-13T00:00:00","date_gmt":"2004-12-12T23:00:00","guid":{"rendered":"https:\/\/wwwneu.strehle.de\/tim\/weblog\/archives\/2004\/12\/13\/432\/"},"modified":"2004-12-13T00:00:00","modified_gmt":"2004-12-12T23:00:00","slug":"432","status":"publish","type":"post","link":"https:\/\/www.strehle.de\/tim\/weblog\/archives\/2004\/12\/13\/432\/","title":{"rendered":"Software Engineering Practices for Large-Scale PHP Projects"},"content":{"rendered":"<p>From 2002, J. Scott Johnson&#8217;s <a href=\"http:\/\/www.fuzzygroup.com\/phpcon2002\/engineering\/\">Software Engineering Practices for Large-Scale PHP Projects<\/a> presentation (viewable with Internet Explorer only):<\/p>\n<p>&#8222;Aspects of Large Scale Projects:<\/p>\n<ul>\n<li>Version control<\/li>\n<li>Design notes<\/li>\n<li>Code reviews<\/li>\n<li>Knowledge capture<\/li>\n<li>Bug tracking<\/li>\n<li>Test plans<\/li>\n<li>Event Logging Throughout The Code<\/li>\n<li>Error Handling Throughout The Code<\/li>\n<li>Dynamic Error Alerting (to administrators)<\/li>\n<li>Redundancy<\/li>\n<li>0 Data Loss<\/li>\n<li>Translation<\/li>\n<li>Human Understandable Error Messages<\/li>\n<li>Separate the HTML from your code<\/li>\n<li>Separate the text from your code<\/li>\n<li>Documentation&#8220;<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>From 2002, J. Scott Johnson&#8217;s Software Engineering Practices for Large-Scale PHP Projects presentation (viewable with Internet Explorer only): &#8222;Aspects of Large Scale Projects: Version control Design notes Code reviews Knowledge capture Bug tracking Test plans Event Logging Throughout The Code Error Handling Throughout The Code Dynamic Error Alerting (to administrators) Redundancy 0 Data Loss Translation [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_share_on_mastodon":"0"},"categories":[1],"tags":[],"class_list":["post-498","post","type-post","status-publish","format-standard","hentry","category-weblog"],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts\/498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/comments?post=498"}],"version-history":[{"count":0,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts\/498\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/media?parent=498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/categories?post=498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/tags?post=498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}