Example #1
0
 /**
  * @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();
 }
Example #2
0
 /**
  * ログインしていない場合にログイン処理を実行する
  * @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');
         }
     }
 }
Example #3
0
$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());
Example #4
0
<?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++;
}
Example #5
0
 /**
  * 接続待ちを開始する
  */
 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());
         }
     }
 }