本文整理汇总了PHP中ArrayUtils::existKey方法的典型用法代码示例。如果您正苦于以下问题:PHP ArrayUtils::existKey方法的具体用法?PHP ArrayUtils::existKey怎么用?PHP ArrayUtils::existKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArrayUtils
的用法示例。
在下文中一共展示了ArrayUtils::existKey方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: serializeObject
function serializeObject($result, $instance, $isSimpleResult, $serverKey)
{
$json = "";
if ($isSimpleResult) {
// It's a simple result, just serialize it
$json = JsonUtils::encodeToJson($result);
} else {
// It's a custom object, let's serialize recursively every field
$className = get_class($result);
$reflectedClass = new ReflectionClass($className);
$xmlObject = RESTConfigurationLoader::getObject($className, $serverKey);
if (empty($xmlObject)) {
throw new MashapeException(sprintf(EXCEPTION_UNKNOWN_OBJECT, $className), EXCEPTION_GENERIC_LIBRARY_ERROR_CODE);
}
// Start element
$json .= "{";
// Serialize fields
$fields = $xmlObject->getFields();
for ($i = 0; $i < count($fields); $i++) {
$field = $fields[$i];
$fieldName = $field->getName();
$fieldMethod = $field->getMethod();
$fieldValue = null;
if (empty($fieldMethod)) {
if ($reflectedClass->hasProperty($fieldName)) {
$reflectedProperty = $reflectedClass->getProperty($fieldName);
if ($reflectedProperty->isPublic()) {
$fieldValue = $reflectedProperty->getValue($result);
} else {
// Try using the __get magic method
$fieldValue = $reflectedClass->getMethod("__get")->invokeArgs($result, array($fieldName));
}
} else {
if (ArrayUtils::existKey($fieldName, get_object_vars($result))) {
$fieldValue = $result->{$fieldName};
} else {
throw new MashapeException(sprintf(EXCEPTION_FIELD_NOTFOUND, $fieldName), EXCEPTION_GENERIC_LIBRARY_ERROR_CODE);
}
}
} else {
$fieldValue = $reflectedClass->getMethod($fieldMethod)->invoke($result);
}
if ($fieldValue === null && $field->isOptional()) {
// Don't serialize the field
continue;
}
$json .= '"' . $fieldName . '":';
if ($fieldValue === null) {
$json .= JsonUtils::encodeToJson($fieldValue);
} else {
$isSimpleField = isSimpleField($field);
if ($field->isArray()) {
if (is_array($fieldValue)) {
$json .= serializeArray($fieldValue, $instance, isSimpleField($field), $serverKey);
} else {
// The result it's not an array although it was described IT WAS an array
throw new MashapeException(sprintf(EXCEPTION_EXPECTED_ARRAY_RESULT, $fieldName, $className), EXCEPTION_GENERIC_LIBRARY_ERROR_CODE);
}
} else {
if (is_array($fieldValue)) {
// The result it's an array although it was described IT WAS NOT an array
throw new MashapeException(sprintf(EXCEPTION_UNEXPECTED_ARRAY_RESULT, $fieldName, $className), EXCEPTION_GENERIC_LIBRARY_ERROR_CODE);
} else {
$json .= serializeObject($fieldValue, $instance, $isSimpleField, $serverKey);
}
}
}
$json .= ",";
}
if (substr($json, strlen($json) - 1, 1) != "{") {
$json = JsonUtils::removeLastChar($fields, $json);
}
// Close element
$json .= "}";
}
return $json;
}
示例2: findRoute
function findRoute($requestUri, &$routeParameters, $httpRequestMethod, $serverKey)
{
$routeMethod = null;
$configuration = RESTConfigurationLoader::loadConfiguration($serverKey);
$methods = $configuration->getMethods();
for ($i = 0; $i < count($methods); $i++) {
if ($methods[$i]->getHttp() != $httpRequestMethod) {
unset($methods[$i]);
}
}
$requestUri = Explode("?", substr($requestUri, 1));
$requestUriParts = Explode("/", $requestUri[0]);
$likelyMethods = array();
$excludedMethods = array();
// Backward loop
for ($i = count($requestUriParts) - 1; $i >= 0; $i--) {
// Find if there's a path like that, otherwise check for placeholders
foreach ($methods as $method) {
$methodName = $method->getName();
if (in_array($methodName, $excludedMethods)) {
continue;
}
$route = $method->getRoute();
if (!empty($route)) {
$routeParts = Explode("/", substr($route, 1));
if (count($routeParts) <= count($requestUriParts)) {
$backwardIndex = count($routeParts) - (count($requestUriParts) - $i);
if ($backwardIndex >= 0) {
if ($routeParts[$backwardIndex] == $requestUriParts[$i]) {
if (!ArrayUtils::existKey($methodName, $likelyMethods)) {
$likelyMethods[$methodName] = array();
}
} else {
if (RouteUtils::isRoutePlaceholder($routeParts[$backwardIndex])) {
$foundParameters;
$placeHolder = RouteUtils::getRoutePlaceholder($routeParts[$backwardIndex]);
if (!ArrayUtils::existKey($methodName, $likelyMethods)) {
$foundParameters = array();
} else {
$foundParameters = $likelyMethods[$methodName];
}
$foundParameters[$placeHolder] = $requestUriParts[$i];
$likelyMethods[$methodName] = $foundParameters;
} else {
array_push($excludedMethods, $methodName);
unset($likelyMethods[$methodName]);
}
}
}
}
}
}
}
if (count($likelyMethods) > 1) {
// Get the route with the highest matches
$maxRouteSize = 0;
foreach ($likelyMethods as $key => $value) {
$route = RESTConfigurationLoader::getMethod($key, $serverKey)->getRoute();
$routeSize = count(Explode("/", substr($route, 1)));
if ($routeSize > $maxRouteSize) {
$maxRouteSize = $routeSize;
}
}
foreach ($likelyMethods as $key => $value) {
$route = RESTConfigurationLoader::getMethod($key, $serverKey)->getRoute();
$routeSize = count(Explode("/", substr($route, 1)));
if ($routeSize < $maxRouteSize) {
unset($likelyMethods[$key]);
}
}
}
if (count($likelyMethods) > 1) {
$ambiguousMethods = "";
foreach ($likelyMethods as $key => $value) {
$ambiguousMethods .= "\"" . $key . "\", ";
}
$ambiguousMethods = substr($ambiguousMethods, 0, strlen($ambiguousMethods) - 2);
throw new MashapeException(sprintf(EXCEPTION_AMBIGUOUS_ROUTE, $ambiguousMethods), EXCEPTION_SYSTEM_ERROR_CODE);
}
// Get the first item (just one or none item can exist)
foreach ($likelyMethods as $key => $value) {
$routeMethod = RESTConfigurationLoader::getMethod($key, $serverKey);
$routeParameters = array_merge($routeParameters, $value);
break;
}
return $routeMethod;
}