<?php /** * Generates setters and getters out of given value and prints the code to screen, which can * simply be copy pasted into place * * Usage example with underscore type and array and string as elements: * <code> * $arr = array * ( * 'name', * array('id', '_id') * ); * * setnget_gen($arr, 1); * * // output: * // * // function set_name($name) { $this->name = $name; } * // function get_name() { return $this->name; } * // function set_id($id) { $this->_id = $id; } * // function get_id() { return $this->_id; } * </code> * *--------------------------------------- * Originally written by Kjetil Hårtveit. * www.kjetil-hartveit.com *--------------------------------------- * * @param array $arr Elements can be string or array: * if string, then the value will be used everywhere, including class variable name * if array then the first element will be method names, and (if exists) the second element * will be class variable name * @param int $type Types: 1=underscore (set_name()), 2=camelcase (setName()) */ function setnget_gen($arr, $type=1) { $str_arr = array(); # contains all the string pairs, all with an distinctive key foreach ($arr as $v) { if (is_array($v)) { @list($name, $var_name) = $v; $var_name = $var_name ? $var_name : $name; } else { $name = $var_name = (string) $v; } switch ($type) { case 1: # underscore default: # note that type defaults to 1 if invalid type is given $str_arr[] = "function set_$name(\$$name) { \$this->$var_name = \$$name; }\r\n". "function get_$name() { return \$this->$var_name; }\r\n"; break; case 2: # camelcase $str_arr[] = 'function set'.ucfirst($name)."(\$$name) { \$this->$var_name = \$$name; }\r\n". 'function get'.ucfirst($name)."() { return \$this->$var_name; }\r\n"; break; } } $str = implode('', $str_arr); echo nl2br($str); } ?>