{"id":68,"date":"2008-03-08T22:37:48","date_gmt":"2008-03-09T06:37:48","guid":{"rendered":"http:\/\/fernyb.net\/blog\/2008\/03\/08\/php-snippet\/"},"modified":"2008-03-08T22:38:48","modified_gmt":"2008-03-09T06:38:48","slug":"php-snippet","status":"publish","type":"post","link":"http:\/\/fernyb.net\/blog\/2008\/03\/08\/php-snippet\/","title":{"rendered":"PHP Snippet"},"content":{"rendered":"<p>Here is a PHP Snippet I wrote. It&#8217;s a cool trick to for calling multiple methods in a much simpler way. Inspired by Ruby&#8217;s ActiveRecord.<\/p>\n<div class=\"ruby\" style=\"width:490px;height:500px;overflow:scroll;background: #0d0e24;\">\n<pre><span class=\"punct\">&lt;<\/span><span class=\"char\">?p<\/span><span class=\"ident\">hp<\/span>\r\n\r\n<span class=\"ident\">interface<\/span> <span class=\"constant\">Member<\/span> <span class=\"punct\">{<\/span>\r\n\t<span class=\"ident\">function<\/span> <span class=\"ident\">login<\/span><span class=\"punct\">(<\/span><span class=\"global\">$username<\/span><span class=\"punct\">,<\/span> <span class=\"global\">$password<\/span><span class=\"punct\">);<\/span>\r\n\t<span class=\"ident\">function<\/span> <span class=\"ident\">update<\/span><span class=\"punct\">(<\/span><span class=\"global\">$status<\/span><span class=\"punct\">);<\/span>\r\n<span class=\"punct\">}<\/span>\r\n\r\n<span class=\"keyword\">class <\/span><span class=\"class\">Base<\/span> <span class=\"ident\">implements<\/span> <span class=\"constant\">Member<\/span> <span class=\"punct\">{<\/span>\r\n\t<span class=\"ident\">public<\/span> <span class=\"ident\">function<\/span> <span class=\"ident\">login<\/span><span class=\"punct\">(<\/span><span class=\"global\">$username<\/span><span class=\"punct\">,<\/span> <span class=\"global\">$password<\/span><span class=\"punct\">)<\/span> <span class=\"punct\">{<\/span>\r\n\t\t<span class=\"ident\">echo<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">You will be logged in as: {$username} with Password: {$password}<span class=\"escape\">\\n<\/span><\/span><span class=\"punct\">&quot;;<\/span>\r\n\t<span class=\"punct\">}<\/span>\r\n\t\r\n\t<span class=\"ident\">public<\/span> <span class=\"ident\">function<\/span> <span class=\"ident\">update<\/span><span class=\"punct\">(<\/span><span class=\"global\">$status<\/span><span class=\"punct\">)<\/span> <span class=\"punct\">{<\/span>\r\n\t\t<span class=\"ident\">echo<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">Your New Status Message is: {$status}<span class=\"escape\">\\n<\/span><\/span><span class=\"punct\">&quot;;<\/span>\r\n\t<span class=\"punct\">}<\/span>\r\n\t\r\n\t<span class=\"ident\">public<\/span> <span class=\"ident\">function<\/span> <span class=\"ident\">__call<\/span><span class=\"punct\">(<\/span><span class=\"global\">$method<\/span><span class=\"punct\">,<\/span> <span class=\"ident\">array<\/span> <span class=\"global\">$argv<\/span><span class=\"punct\">)<\/span> <span class=\"punct\">{<\/span>\r\n\t\t<span class=\"keyword\">if<\/span><span class=\"punct\">(<\/span><span class=\"ident\">preg_match<\/span><span class=\"punct\">('<\/span><span class=\"string\">\/^do_*\/i<\/span><span class=\"punct\">',<\/span> <span class=\"global\">$method<\/span><span class=\"punct\">))<\/span> <span class=\"punct\">{<\/span>\r\n\t\t\t<span class=\"ident\">foreach<\/span><span class=\"punct\">(<\/span><span class=\"ident\">explode<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">_and_<\/span><span class=\"punct\">&quot;,<\/span> <span class=\"ident\">substr<\/span><span class=\"punct\">(<\/span><span class=\"global\">$method<\/span><span class=\"punct\">,<\/span> <span class=\"number\">3<\/span><span class=\"punct\">))<\/span> <span class=\"ident\">as<\/span> <span class=\"global\">$k<\/span> <span class=\"punct\">=&gt;<\/span> <span class=\"global\">$v<\/span><span class=\"punct\">)<\/span> <span class=\"punct\">{<\/span>\r\n\t\t\t\t<span class=\"global\">$param<\/span> <span class=\"punct\">=<\/span> <span class=\"ident\">array<\/span><span class=\"punct\">();<\/span>\r\n\t\t\t\t<span class=\"ident\">foreach<\/span><span class=\"punct\">(<\/span><span class=\"global\">$argv<\/span><span class=\"punct\">[<\/span><span class=\"global\">$k<\/span><span class=\"punct\">]<\/span> <span class=\"ident\">as<\/span> <span class=\"global\">$value<\/span><span class=\"punct\">)<\/span> <span class=\"punct\">{<\/span> <span class=\"global\">$param<\/span><span class=\"punct\">[]<\/span> <span class=\"punct\">=<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">'{$value}'<\/span><span class=\"punct\">&quot;;<\/span> <span class=\"punct\">}<\/span>\r\n\t\t\t\t<span class=\"global\">$param<\/span> <span class=\"punct\">=<\/span> <span class=\"ident\">join<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">, <\/span><span class=\"punct\">&quot;,<\/span> <span class=\"global\">$param<\/span><span class=\"punct\">);<\/span>\r\n\t\t\t\t<span class=\"global\">$code<\/span> <span class=\"punct\">=<\/span> <span class=\"punct\">'<\/span><span class=\"string\">$this-&gt;<\/span><span class=\"punct\">'.<\/span> <span class=\"global\">$v<\/span> <span class=\"punct\">.&quot;<\/span><span class=\"string\">({$param});<\/span><span class=\"punct\">&quot;;<\/span>\r\n\t\t\t\t<span class=\"ident\">eval<\/span><span class=\"punct\">(<\/span><span class=\"global\">$code<\/span><span class=\"punct\">);<\/span>\r\n\t\t\t<span class=\"punct\">}<\/span>\r\n\t\t<span class=\"punct\">}<\/span>\r\n\t<span class=\"punct\">}<\/span>\r\n<span class=\"punct\">}<\/span>\r\n\r\n\r\n<span class=\"keyword\">class <\/span><span class=\"class\">User<\/span> <span class=\"ident\">extends<\/span> <span class=\"constant\">Base<\/span> <span class=\"punct\">{<\/span>\r\n\t\r\n\t<span class=\"ident\">public<\/span> <span class=\"ident\">function<\/span> <span class=\"ident\">say_hello<\/span><span class=\"punct\">(<\/span><span class=\"global\">$message<\/span><span class=\"punct\">)<\/span> <span class=\"punct\">{<\/span>\r\n\t\t<span class=\"ident\">echo<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">Message: {$message} <span class=\"escape\">\\n<\/span><\/span><span class=\"punct\">&quot;;<\/span>\r\n\t<span class=\"punct\">}<\/span>\r\n<span class=\"punct\">}<\/span>\r\n\r\n\r\n<span class=\"global\">$usr<\/span> <span class=\"punct\">=&amp;<\/span> <span class=\"ident\">new<\/span> <span class=\"constant\">User<\/span><span class=\"punct\">();<\/span>\r\n\r\n<span class=\"global\">$usr<\/span><span class=\"punct\">-&gt;<\/span><span class=\"ident\">do_login_and_update<\/span><span class=\"punct\">(<\/span><span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">username<\/span><span class=\"punct\">&quot;,<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">password<\/span><span class=\"punct\">&quot;),<\/span> <span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">Hello World<\/span><span class=\"punct\">&quot;));<\/span>\r\n<span class=\"comment\"># Prints the following:<\/span>\r\n<span class=\"comment\"># You will be logged in as: username with Password: password<\/span>\r\n<span class=\"comment\"># Your New Status Message is: Hello World<\/span>\r\n<span class=\"comment\">#<\/span>\r\n\r\n<span class=\"global\">$usr<\/span><span class=\"punct\">-&gt;<\/span><span class=\"ident\">do_login_and_say_hello<\/span><span class=\"punct\">(<\/span><span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">username<\/span><span class=\"punct\">&quot;,<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">password<\/span><span class=\"punct\">&quot;),<\/span> <span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">Hi how are you?<\/span><span class=\"punct\">&quot;));<\/span>\r\n<span class=\"comment\"># Prints the following:<\/span>\r\n<span class=\"comment\"># You will be logged in as: username with Password: password<\/span>\r\n<span class=\"comment\"># Message: Hi how are you?<\/span>\r\n<span class=\"comment\">#<\/span>\r\n\r\n<span class=\"global\">$usr<\/span><span class=\"punct\">-&gt;<\/span><span class=\"ident\">do_login_and_update_and_say_hello<\/span><span class=\"punct\">(<\/span><span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">username<\/span><span class=\"punct\">&quot;,<\/span> <span class=\"punct\">&quot;<\/span><span class=\"string\">password<\/span><span class=\"punct\">&quot;),<\/span> <span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">Hello World<\/span><span class=\"punct\">&quot;),<\/span> <span class=\"ident\">array<\/span><span class=\"punct\">(&quot;<\/span><span class=\"string\">Hi how are you?<\/span><span class=\"punct\">&quot;));<\/span>\r\n<span class=\"comment\"># Prints the following:<\/span>\r\n<span class=\"comment\"># You will be logged in as: username with Password: password<\/span>\r\n<span class=\"comment\"># Your New Status Message is: Hello World<\/span>\r\n<span class=\"comment\"># Message: Hi how are you?<\/span>\r\n<span class=\"comment\">#<\/span>\r\n\r\n<span class=\"char\">?&gt;<\/span><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Here is a PHP Snippet I wrote. It&#8217;s a cool trick to for calling multiple methods in a much simpler way. Inspired by Ruby&#8217;s ActiveRecord. &lt;?php interface Member { function login($username, $password); function update($status); } class Base implements Member { public function login($username, $password) { echo &quot;You will be logged in as: {$username} with Password: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,3],"tags":[],"_links":{"self":[{"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/posts\/68"}],"collection":[{"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":0,"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"wp:attachment":[{"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/fernyb.net\/blog\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}