protected function _getForeignClassForProperty($property_name) { if (!($foreign_type = B2DB::getCachedClassPropertyForeignClass(get_class($this), $property_name))) { $reflection = new ReflectionProperty(get_class($this), $property_name); $docblock = $reflection->getDocComment(); if ($docblock) { $has_b2dbtype = strpos($docblock, '@Class', 3); $no_autopopulate = strpos($docblock, '@NoAutoPopulation', 3); if ($has_b2dbtype !== false && !$no_autopopulate) { $type_details = substr($docblock, $has_b2dbtype + 7); $type_details = explode(' ', $type_details); $foreign_type = trim($type_details[0]); B2DB::addCachedClassPropertyForeignClass(get_class($this), $property_name, $foreign_type); } } } return $foreign_type; }