Variant f_stream_context_create(CArrRef options /* = null_array */, CArrRef params /* = null_array */) { if (!options.isNull() && !StreamContext::validateOptions(options)) { return false; } return Resource(NEWOBJ(StreamContext)(options, params)); }
Variant f_spl_autoload_functions() { CArrRef handlers = AutoloadHandler::s_instance->getHandlers(); if (handlers.isNull()) return false; else return handlers.values(); }
Array ArrayUtil::EnsureIntKeys(CArrRef input) { assert(!input.isNull()); if (!input.getArrayData()->isVectorData()) { return input.values(); } return input; }
bool same(CVarRef v1, CArrRef v2) { bool null1 = v1.isNull(); bool null2 = v2.isNull(); if (null1 && null2) return true; if (null1 || null2) return false; if (!v1.isArray()) return false; auto const ad = v1.getArrayData(); return v2->equal(ad, true); }
Variant f_stream_context_get_default(CArrRef options /* = null_array */) { Resource &resource = g_context->getStreamContext(); if (resource.isNull()) { resource = Resource(NEWOBJ(StreamContext)(Array::Create(), Array::Create())); g_context->setStreamContext(resource); } StreamContext *context = resource.getTyped<StreamContext>(); if (!options.isNull() && !f_stream_context_set_option0(context, options)) { return false; } return resource; }
void VariableSerializer::write(CArrRef v) { if (m_type == APCSerialize && !v.isNull() && v->isStatic()) { union { char buf[8]; ArrayData *ad; } u; u.ad = v.get(); m_buf->append("A:"); m_buf->append(u.buf, 8); m_buf->append(';'); } else { v.serialize(this); } }
void ExtendedLogger::Log(LogLevelType level, CArrRef stackTrace, bool escape /* = true */, bool escapeMore /* = false */) { assert(!escapeMore || escape); ThreadData *threadData = s_threadData.get(); if (++threadData->message > MaxMessagesPerRequest && MaxMessagesPerRequest >= 0) { return; } if (stackTrace.isNull()) return; if (UseLogFile) { FILE *f = Output ? Output : GetStandardOut(level); PrintStackTrace(f, stackTrace, escape, escapeMore); FILE *tf = threadData->log; if (tf) { PrintStackTrace(tf, stackTrace, escape, escapeMore); } } }
void ExtendedLogger::Log(bool err, CArrRef stackTrace, bool escape /* = true */, bool escapeMore /* = false */) { ASSERT(!escapeMore || escape); ThreadData *threadData = s_threadData.get(); if (++threadData->message > MaxMessagesPerRequest && MaxMessagesPerRequest >= 0) { return; } if (stackTrace.isNull()) return; // TODO Should we also send the stacktrace to LogAggregator? if (UseLogFile) { FILE *f = Output ? Output : (err ? stderr : stdout); PrintStackTrace(f, stackTrace, escape, escapeMore); FILE *tf = threadData->log; if (tf) { PrintStackTrace(tf, stackTrace, escape, escapeMore); } } }