Пример #1
0
function send_message()
{
    logit("POST", $_POST);
    // set_error_handler("error_handler");
    try {
        $message = params('message');
        $n_message = $message;
        $id = params('id');
        logit('looking for object', $id);
        $object = get_object($id);
        if (is_null($object)) {
            logit('object not found', params('id'));
            halt(NOT_FOUND, array("exception" => "ObjectNotFound", "error" => 'Object not found'));
            // return "object:" . params('id') . ": was not found";
        } else {
            $args = $_POST['args'];
            logit('message :' . $message . ' args <' . $args . '>');
            if (is_null($args) || $args == '[]') {
                logit('args are empty');
                if (!property_exists($object, $message)) {
                    throw new NoMethodError("Property {$message} does not exist");
                }
                $result = $object->{$message};
                logit("\$object->{$message} returning ", $result);
            } else {
                $orig_args = $args;
                logit('decoding args <' . $args . '>');
                $args = json_decode($args, true);
                logit('args are :', $args);
                if (preg_match('/\\=$/', $message) == 1) {
                    $n_message = substr($message, 0, strlen($message) - 1);
                    logit("\$object->{$n_message} = ", $args[0]);
                    if (!property_exists($object, $n_message)) {
                        throw new NoMethodError("property {$n_message} (original message:{$message}) does not exist");
                    }
                    $object->{$n_message} = $args[0];
                    $result = array();
                } else {
                    logit("\$obect->{$message}()");
                    logit('class of object', get_class($object));
                    logit('object', object_properties_to_hash($object));
                    if (!method_exists($object, $message)) {
                        throw new NoMethodError("method {$message} does not exist");
                    }
                    if (is_array($args)) {
                        // if (is_numeric($args[0])) {
                        $args = convert_objs($args);
                        logit("args after conversion", $args);
                        $argstr = join($args, ",");
                        logit("argstr after join", $argstr);
                        // }
                        // else {
                        //   $args = json_decode($orig_args, true);
                        //   $argstr = var_export($args, true);
                        // }
                    } else {
                        $argstr = $args;
                    }
                    logit("calling " . "return \$object->{$message}({$argstr});");
                    $result = eval("return \$object->{$message}({$argstr});");
                    logit("returning ", $result);
                }
            }
            store_object_with_id($object, $id);
            return json_encode(array($result));
        }
    } catch (Exception $e) {
        logit('Exception ' . $e->getMessage());
        halt(422, array("exception" => get_class($e), "error" => $e->getMessage()));
        // return json_encode(array('error' => $e->getMessage()));
    }
}
Пример #2
0
function new_object()
{
    try {
        $name = params('name');
        $args = $_POST['args'];
        $argstr = $args;
        logit('POST: args ', $args);
        if (is_null($args) || $args == '[]') {
            logit("calling new {$name}()");
            $object = new $name();
            logit("got object:" . get_class($object));
        } else {
            logit('args b4 decode', $args);
            $args = json_decode($args, true);
            logit('args after decode', $args);
            if (is_array($args)) {
                $args = convert_objs($args);
                logit("args after conversion", $args);
                $argstr = join($args, ",");
                logit("argstr after join", $argstr);
            } else {
                $argstr = $args;
            }
            logit("calling " . "return new {$name}({$argstr});");
            $object = eval("return new {$name}({$argstr});");
        }
        store_object($object);
        $data = object_properties_to_hash($object);
        $results = array('json_class' => $name, 'data' => $data, 'id' => spl_object_hash($object));
        logit("results", $results);
        return json_encode($results);
    } catch (LoadError $e) {
        halt(422, array("exception" => "LoadError", "error" => $e->getMessage()));
    } catch (Exception $e) {
        logit('Exception ' . $e->getMessage());
        halt(422, array("exception" => get_class($e), "error" => $e->getMessage()));
        // return json_encode(array('error' => $e->getMessage()));
    }
}