bool ClassConstantExpression::evalStaticScalar(VariableEnvironment &env,
                                               Variant &r) const {
  String cls = m_class->get(env);
  const char *constant = m_constant.c_str();
  if (eval_get_class_constant_hook(r, cls, constant)) return true;
  return false;
}
Example #2
0
Variant get_class_constant(CStrRef s,
                           const char *constant,
                           int fatal /* = true */) {
  {
    Variant r;
    if (eval_get_class_constant_hook(r, s, constant)) return r;
  }
  {
    const ObjectStaticCallbacks * cwo = get_builtin_object_static_callbacks(s);
    if (cwo) return cwo->os_constant(constant);
  }
  if (fatal > 0) {
    raise_error("Couldn't find constant %s::%s", s.data(), constant);
  } else if (!fatal) {
    raise_warning("Couldn't find constant %s::%s", s.data(), constant);
  }
  return null;
}