original_string: public function findFile($class)
      {
          // Remove first backslash
          if ('\\' == $class[0]) {
              $class = substr($class, 1);
          }
  
          if (false !== $pos = strrpos($class, '\\')) {
              // Namespaced class name
              $namespace = substr($class, 0, $pos);
  
              // Iterate in normal namespaces
              foreach ($this->namespaces as $ns => $dirs) {
                  //Don't interfere with other autoloaders
                  if (0 !== strpos($namespace, $ns)) {
                      continue;
                  }
  
                  foreach ($dirs as $dir) {
                      $className = substr($class, $pos + 1);
  
                      $file = $dir . DIRECTORY_SEPARATOR .
                          str_replace('\\', DIRECTORY_SEPARATOR, $namespace) .
                          DIRECTORY_SEPARATOR .
                          $className . '.php';
  
                      if (file_exists($file)) {
                          return $file;
                      }
                  }
              }
  
              // Iterate in Thrift namespaces
  
              // Remove first part of namespace
              $m = explode('\\', $class);
  
              // Ignore wrong call
              if (count($m) <= 1) {
                  return;
              }
  
              $class = array_pop($m);
              $namespace = implode('\\', $m);
  
              foreach ($this->definitions as $ns => $dirs) {
                  //Don't interfere with other autoloaders
                  if (0 !== strpos($namespace, $ns)) {
                      continue;
                  }
  
                  foreach ($dirs as $dir) {
                      /**
                       * Available in service: Interface, Client, Processor, Rest
                       * And every service methods (_.+)
                       */
                      if (0 === preg_match('#(.+)(if|client|processor|rest)$#i', $class, $n) and
                          0 === preg_match('#(.+)_[a-z0-9]+_(args|result)$#i', $class, $n)
                      ) {
                          $className = 'Types';
                      } else {
                          $className = $n[1];
                      }
  
                      $file = $dir . DIRECTORY_SEPARATOR .
                          str_replace('\\', DIRECTORY_SEPARATOR, $namespace) .
                          DIRECTORY_SEPARATOR .
                          $className . '.php';
  
                      if (file_exists($file)) {
                          return $file;
                      }
                  }
              }
          }
      }
code: public function findFile($class)
      {
          // Remove first backslash
          if ('\\' == $class[0]) {
              $class = substr($class, 1);
          }
  
          if (false !== $pos = strrpos($class, '\\')) {
              // Namespaced class name
              $namespace = substr($class, 0, $pos);
  
              // Iterate in normal namespaces
              foreach ($this->namespaces as $ns => $dirs) {
                  //Don't interfere with other autoloaders
                  if (0 !== strpos($namespace, $ns)) {
                      continue;
                  }
  
                  foreach ($dirs as $dir) {
                      $className = substr($class, $pos + 1);
  
                      $file = $dir . DIRECTORY_SEPARATOR .
                          str_replace('\\', DIRECTORY_SEPARATOR, $namespace) .
                          DIRECTORY_SEPARATOR .
                          $className . '.php';
  
                      if (file_exists($file)) {
                          return $file;
                      }
                  }
              }
  
              // Iterate in Thrift namespaces
  
              // Remove first part of namespace
              $m = explode('\\', $class);
  
              // Ignore wrong call
              if (count($m) <= 1) {
                  return;
              }
  
              $class = array_pop($m);
              $namespace = implode('\\', $m);
  
              foreach ($this->definitions as $ns => $dirs) {
                  //Don't interfere with other autoloaders
                  if (0 !== strpos($namespace, $ns)) {
                      continue;
                  }
  
                  foreach ($dirs as $dir) {
                      /**
                       * Available in service: Interface, Client, Processor, Rest
                       * And every service methods (_.+)
                       */
                      if (0 === preg_match('#(.+)(if|client|processor|rest)$#i', $class, $n) and
                          0 === preg_match('#(.+)_[a-z0-9]+_(args|result)$#i', $class, $n)
                      ) {
                          $className = 'Types';
                      } else {
                          $className = $n[1];
                      }
  
                      $file = $dir . DIRECTORY_SEPARATOR .
                          str_replace('\\', DIRECTORY_SEPARATOR, $namespace) .
                          DIRECTORY_SEPARATOR .
                          $className . '.php';
  
                      if (file_exists($file)) {
                          return $file;
                      }
                  }
              }
          }
      }
code_tokens: public function findFile ( $ class ) { // Remove first backslash if ( '\\' == $ class [ 0 ] ) { $ class = substr ( $ class , 1 ) ; } if ( false !== $ pos = strrpos ( $ class , '\\' ) ) { // Namespaced class name $ namespace = substr ( $ class , 0 , $ pos ) ; // Iterate in normal namespaces foreach ( $ this -> namespaces as $ ns => $ dirs ) { //Don't interfere with other autoloaders if ( 0 !== strpos ( $ namespace , $ ns ) ) { continue ; } foreach ( $ dirs as $ dir ) { $ className = substr ( $ class , $ pos + 1 ) ; $ file = $ dir . DIRECTORY_SEPARATOR . str_replace ( '\\' , DIRECTORY_SEPARATOR , $ namespace ) . DIRECTORY_SEPARATOR . $ className . '.php' ; if ( file_exists ( $ file ) ) { return $ file ; } } } // Iterate in Thrift namespaces // Remove first part of namespace $ m = explode ( '\\' , $ class ) ; // Ignore wrong call if ( count ( $ m ) <= 1 ) { return ; } $ class = array_pop ( $ m ) ; $ namespace = implode ( '\\' , $ m ) ; foreach ( $ this -> definitions as $ ns => $ dirs ) { //Don't interfere with other autoloaders if ( 0 !== strpos ( $ namespace , $ ns ) ) { continue ; } foreach ( $ dirs as $ dir ) { /**
                       * Available in service: Interface, Client, Processor, Rest
                       * And every service methods (_.+)
                       */ if ( 0 === preg_match ( '#(.+)(if|client|processor|rest)$#i' , $ class , $ n ) and 0 === preg_match ( '#(.+)_[a-z0-9]+_(args|result)$#i' , $ class , $ n ) ) { $ className = 'Types' ; } else { $ className = $ n [ 1 ] ; } $ file = $ dir . DIRECTORY_SEPARATOR . str_replace ( '\\' , DIRECTORY_SEPARATOR , $ namespace ) . DIRECTORY_SEPARATOR . $ className . '.php' ; if ( file_exists ( $ file ) ) { return $ file ; } } } } }
docstring: Find class in namespaces or definitions directories
  @param  string $class
  @return string
docstring_tokens: Find class in namespaces or definitions directories