bool DynamicObjectData::o_get_call_info_ex(const char *clsname,
      MethodCallPackage &info, int64 hash /* = -1 */) {
  if (strcasecmp(o_getClassName(), clsname) == 0) {
    return o_get_call_info(info, hash);
  } else if(!parent.isNull()) {
    return parent->o_get_call_info_ex(clsname, info, hash);
  } else {
    return ObjectData::o_get_call_info_ex(clsname, info, hash);
  }
}
Variant DynamicObjectData::o_invoke_ex(const char *clsname, const char *s,
                                       CArrRef params, int64 hash,
                                       bool fatal /* = false */) {
  if (strcasecmp(o_getClassName(), clsname) == 0) {
    return o_invoke(s, params, hash);
  } else if(!parent.isNull()) {
    return parent->o_invoke_ex(clsname, s, params, hash, fatal);
  } else {
    return ObjectData::o_invoke_ex(clsname, s, params, hash, fatal);
  }
}
Example #3
0
bool TestCppBase::TestObject() {
  {
    String s = "O:1:\"B\":1:{s:3:\"obj\";O:1:\"A\":1:{s:1:\"a\";i:10;}}";
    Variant v = unserialize_from_string(s);
    VERIFY(v.isObject());
    auto o = v.toObject();
    VS(o->o_getClassName().asString(), "__PHP_Incomplete_Class");
    auto os = HHVM_FN(serialize)(o);
    VS(os, "O:1:\"B\":1:{s:3:\"obj\";O:1:\"A\":1:{s:1:\"a\";i:10;}}");
  }
  return Count(true);
}
void EvalObjectData::o_setArray(CArrRef props) {
    for (ArrayIter it(props); !it.end(); it.next()) {
        String k = it.first();
        if (!k.empty() && k.charAt(0) == '\0') {
            int subLen = k.find('\0', 1) + 1;
            String cls = k.substr(1, subLen - 2);
            String key = k.substr(subLen);
            if (cls == "*") cls = o_getClassName();
            props->load(k, o_lval(key, Variant(), cls));
        }
    }
    DynamicObjectData::o_setArray(props);
}
bool TestCppBase::TestObject() {
  {
    String s = "O:1:\"B\":1:{s:3:\"obj\";O:1:\"A\":1:{s:1:\"a\";i:10;}}";
    Variant v = unserialize_from_string(s);
    VERIFY(v.isObject());
    auto o = v.toObject();
    VS(o->o_getClassName(), "__PHP_Incomplete_Class");
    auto os = f_serialize(o);
    VS(os, "O:1:\"B\":1:{s:3:\"obj\";O:1:\"A\":1:{s:1:\"a\";i:10;}}");
  }
  VERIFY(!equal(Object(new TestResource()), Object(new TestResource()) ));
  return Count(true);
}
Example #6
0
Array File::getMetaData() {
  Array ret = Array::Create();
  ret.set("wrapper_type", o_getClassName());
  ret.set("stream_type",  getStreamType());
  ret.set("mode",         String(m_mode));
  ret.set("unread_bytes", 0);
  ret.set("seekable",     seekable());
  ret.set("uri",          String(m_name));
  ret.set("timed_out",    false);
  ret.set("blocked",      true);
  ret.set("eof",          eof());
  return ret;
}
void EvalObjectData::o_getArray(Array &props, bool pubOnly /* = false */)
const {
    if (!pubOnly) {
        String zero("\0", 1, AttachLiteral);
        for (ArrayIter it(m_privates); !it.end(); it.next()) {
            String prefix(zero);
            prefix += it.first();
            prefix += zero;
            for (ArrayIter it2(it.second()); !it2.end(); it2.next()) {
                CVarRef v = it2.secondRef();
                if (v.isInitialized()) {
                    props.lvalAt(prefix + it2.first()).setWithRef(v);
                }
            }
        }
    }
    DynamicObjectData::o_getArray(props, pubOnly);
    if (pubOnly) {
        const ClassInfo *info = ClassInfo::FindClass(o_getClassName());
        info->filterProperties(props, ClassInfo::IsProtected);
    }
}
Example #8
0
const String& ResourceData::o_getResourceName() const {
  return o_getClassName();
}
CStrRef ResourceData::o_getResourceName() const {
    return o_getClassName();
}
Example #10
0
const char *ResourceData::o_getResourceName() const {
  return o_getClassName().data();
}