/** * @automap */ public function insert() { $req = new \org\rhaco\Request(); $model = new \test\model\TestModel(); $model->id(100); $model->string('abcdefg'); $model->integer($req->in_vars('integer')); $model->save(); }
/** * ログインしていない場合にログイン処理を実行する * @throws \LogicException */ public function login_required() { if (!$this->is_login() && isset($this->select_map['method']) && $this->select_map['method'] != 'do_login') { if ($this->has_object_module('before_login_required')) { /** * 未ログイン時のログイン処理の前処理 * @param self $this */ $this->object_module('before_login_required', $this); } if (!$this->is_login()) { if ($this->select_map['method'] != 'do_logout') { $this->set_login_redirect(\org\rhaco\Request::current_url() . \org\rhaco\Request::request_string(true)); } $req = new \org\rhaco\Request(); $this->sess->vars(__CLASS__ . '_login_vars', array(time(), $req->ar_vars())); foreach ($this->package_maps as $k => $m) { if ($m['method'] == 'do_login' && isset($m['format'])) { return \org\rhaco\net\http\Header::redirect($m['format']); } } foreach ($this->maps as $k => $m) { if (isset($m['name']) && $m['name'] == 'login' || isset($m['method']) && $this->select_map['class'] == $m['class'] && $m['method'] == 'do_login' && isset($m['format'])) { return \org\rhaco\net\http\Header::redirect($m['format']); } } \org\rhaco\net\http\Header::send_status(401); throw new \LogicException('Unauthorized'); } } }
$xml = new \org\rhaco\Xml("test"); eq("hoge", $xml->value("hoge")); eq("true", $xml->value(true)); eq("false", $xml->value(false)); eq("<abc>1</abc><def>2</def><ghi>3</ghi>", $xml->value(array("abc" => 1, "def" => 2, "ghi" => 3))); eq(null, $xml->value('')); eq(1, $xml->value('1')); eq(null, $xml->value(null)); $xml->escape(true); eq("<abc>123</abc>", $xml->value("<abc>123</abc>")); eq("<b>123</b>", $xml->value(new \org\rhaco\Xml("b", "123"))); $xml = new \org\rhaco\Xml("test"); $xml->escape(false); eq("<abc>123</abc>", $xml->value("<abc>123</abc>", false)); $obj = new \org\rhaco\Request(); $obj->rm_vars(); $obj->vars('aaa', 'hoge'); $obj->vars('ccc', 123); $xml = new \org\rhaco\Xml('abc', $obj); eq('<abc><aaa>hoge</aaa><ccc>123</ccc></abc>', $xml->get()); $xml = new \org\rhaco\Xml("test"); $add = new \org\rhaco\Xml("addxml", "hoge"); $xml->add($add); $xml->add($add->get()); $xml->add((string) $add); eq('<test><addxml>hoge</addxml><![CDATA[<addxml>hoge</addxml>]]><![CDATA[<addxml>hoge</addxml>]]></test>', $xml->get()); $xml = new \org\rhaco\Xml("test"); $add = new \org\rhaco\Xml("addxml", "hoge"); $xml->add($add); $xml->add($add->get());
<?php $req = new \org\rhaco\Request(); $req->rm_vars(); $req->vars('abc', 1); $req->vars('def', 2); $req->vars('ghi', 3); $i = 0; $keys = array('abc', 'def', 'ghi'); $values = array(1, 2, 3); foreach ($req as $k => $v) { eq($keys[$i], $k); eq($values[$i], $v); $i++; }
/** * 接続待ちを開始する */ public function start($address = 'localhost', $port = 8888, $backlog = 0) { $req = new \org\rhaco\Request(); if ($req->is_vars('address')) { $address = $req->in_vars('address', $address); } if ($req->is_vars('port')) { $port = $req->in_vars('port', $port); } @set_time_limit(0); $start_time = time(); while (true) { try { $this->gsocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($this->gsocket === false) { throw new \org\rhaco\net\listener\exception\ConnectException(socket_strerror(socket_last_error())); } if (false === socket_bind($this->gsocket, $address, $port)) { throw new \org\rhaco\net\listener\exception\ConnectException(socket_strerror(socket_last_error())); } if (false === socket_listen($this->gsocket, $backlog)) { throw new \org\rhaco\net\listener\exception\ConnectException(socket_strerror(socket_last_error())); } /** * listen * @param string $address * @param integer $port */ $this->object_module('listen', $address, $port); while (true) { $this->socket = socket_accept($this->gsocket); if ($this->socket === false) { throw new \org\rhaco\net\listener\exception\ConnectException(socket_strerror(socket_last_error())); } $channel = new \org\rhaco\net\listener\Channel($this->socket); try { /** * 接続時の処理 * @param org.rhaco.net.listener.Channel $channel */ $this->object_module('instruction', $channel); /** * 接続後の処理 * @param org.rhaco.net.listener.Channel $channel */ $this->object_module('connect', $channel); $this->socket_close($this->socket); } catch (\org\rhaco\net\listener\exception\ShutdownException $e) { unset($channel); $this->socket_close($this->socket); break; } unset($channel); } $this->socket_close($this->gsocket); } catch (\org\rhaco\net\listener\exception\ConnectException $e) { $this->socket_close($this->gsocket); if ($start_time + 30 < time()) { throw new \org\rhaco\net\listener\exception\ErrorException($e->getMessage()); } sleep(1); } catch (\Exception $e) { $this->socket_close($this->gsocket); throw new \org\rhaco\net\listener\exception\ErrorException($e->getMessage()); } } }