本文整理汇总了PHP中Pimcore\Resource::getType方法的典型用法代码示例。如果您正苦于以下问题:PHP Resource::getType方法的具体用法?PHP Resource::getType怎么用?PHP Resource::getType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pimcore\Resource
的用法示例。
在下文中一共展示了Resource::getType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: initResource
/**
* @param null $key
* @throws \Exception
*/
public function initResource($key = null)
{
$myClass = get_class($this);
$resource = null;
if (!$key) {
// check for a resource in the cache
if (array_key_exists($myClass, self::$resourceClassCache)) {
$resource = self::$resourceClassCache[$myClass];
} else {
$classes = $this->getParentClasses($myClass);
foreach ($classes as $class) {
$delimiter = "_";
// old prefixed class style
if (strpos($class, "\\")) {
$delimiter = "\\";
// that's the new with namespaces
}
$classParts = explode($delimiter, $class);
$length = count($classParts);
$className = null;
for ($i = 0; $i < $length; $i++) {
// check for a general DBMS resource adapter
$tmpClassName = implode($delimiter, $classParts) . $delimiter . "Resource";
if ($className = $this->determineResourceClass($tmpClassName)) {
break;
}
// this is just for compatibility anymore, this was before the standard way
// but as there will not be a specialized implementation anymore eg. Oracle, PostgreSQL, ...
// we can move that below the general resource adapter as a fallback
$tmpClassName = implode($delimiter, $classParts) . $delimiter . "Resource" . $delimiter . ucfirst(Resource::getType());
if ($className = $this->determineResourceClass($tmpClassName)) {
break;
}
array_pop($classParts);
}
if ($className && $className != "Pimcore\\Resource") {
//\Logger::debug("Found resource implementation " . $className . " for " . $myClass);
$resource = $className;
self::$resourceClassCache[$myClass] = $resource;
break;
}
}
}
} else {
// check in cache
$cacheKey = $myClass . "-" . $key;
if (array_key_exists($cacheKey, self::$resourceClassCache)) {
$resource = self::$resourceClassCache[$cacheKey];
} else {
$delimiter = "_";
// old prefixed class style
if (strpos($key, "\\") !== false) {
$delimiter = "\\";
// that's the new with namespaces
}
// check for a specialized resource adapter for the current DBMS
$resourceClass = $key . $delimiter . "Resource" . $delimiter . ucfirst(Resource::getType());
if (!($resource = $this->determineResourceClass($resourceClass))) {
$resource = $key . $delimiter . "Resource";
}
self::$resourceClassCache[$cacheKey] = $resource;
}
}
if (!$resource) {
\Logger::critical("No resource implementation found for: " . $myClass);
throw new \Exception("No resource implementation found for: " . $myClass);
}
$resource = "\\" . ltrim($resource, "\\");
$this->resource = new $resource();
$this->resource->setModel($this);
$db = Resource::get();
$this->resource->configure($db);
if (method_exists($this->resource, "init")) {
$this->resource->init();
}
}