Skip to content

Instantly share code, notes, and snippets.

@co3k
Created November 12, 2011 17:58
Show Gist options
  • Save co3k/1360880 to your computer and use it in GitHub Desktop.
Save co3k/1360880 to your computer and use it in GitHub Desktop.
タイプヒンティングされてるランキング
<?php
// You need to clone https://github.com/nikic/PHP-Parser
require_once __DIR__.'/PHP-Parser/lib/PHPParser/Autoloader.php';
PHPParser_Autoloader::register();
if (2 > $argc) {
var_dump('$argv[1] is needed');
exit;
}
class MyNodeVisitor extends PHPParser_NodeVisitorAbstract
{
public $classes = array();
public function enterNode(PHPParser_Node $node)
{
if ($node instanceof PHPParser_Node_Param) {
$type = $node->getIterator()->offsetGet('type');
if ($type instanceof PHPParser_Node_Name) {
$name = (string)$type;
if (isset($this->classes[$name])) {
$this->classes[$name]++;
} else {
$this->classes[$name] = 1;
}
}
}
}
}
$visitor = new MyNodeVisitor();
$parser = new PHPParser_Parser;
$traverser = new PHPParser_NodeTraverser;
$traverser->addVisitor($visitor);
$dir = $argv[1];
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
foreach ($iterator as $entry) {
if (!$entry->isFile()) {
continue;
}
$name = (string)$entry;
if (false !== strpos($name, '.git')) {
continue;
}
try {
$stmts = $parser->parse(new PHPParser_Lexer(file_get_contents($name)));
$stmts = $traverser->traverse($stmts);
} catch (PHPParser_Error $e) {
}
}
arsort($visitor->classes);
var_dump($visitor);
@co3k
Copy link
Author

co3k commented Nov 12, 2011

ebiten:php co3k$ php typehints-list.php ~/Sites/sf/op3-ebihara/                         
object(MyNodeVisitor)#1 (1) {
  ["classes"]=>
  array(362) {
    ["sfWebRequest"]=>
    int(353)
    ["Doctrine_Event"]=>
    int(323)
    ["PhingFile"]=>
    int(170)
    ["Doctrine_Record"]=>
    int(131)
    ["DOMElement"]=>
    int(122)
    ["Doctrine_Query"]=>
    int(105)
    ["DOMDocument"]=>
    int(92)
    ["sfEvent"]=>
    int(91)
    ["sfEventDispatcher"]=>
    int(86)
    ["PropelPDO"]=>
    int(74)
    ["Zend_Search_Lucene_Interface"]=>
    int(72)
    ["Doctrine_Connection"]=>
    int(65)
    ["SecurityToken"]=>
    int(63)
    ["NodeObject"]=>
    int(59)
    ["Project"]=>
    int(58)
    ["Doctrine_Table"]=>
    int(53)
    ["RequestItem"]=>
    int(51)
    ["Member"]=>
    int(44)
    ["Zend_Acl"]=>
    int(42)
    ["Zend_Search_Lucene_Index_Term"]=>
    int(41)
    ["Table"]=>
    int(41)
    ["Column"]=>
    int(40)
    ["BuildEvent"]=>
    int(38)
    ["Swift_Mime_Message"]=>
    int(35)
    ["Exception"]=>
    int(35)
    ["RemoteContentRequest"]=>
    int(33)
    ["Swift_InputByteStream"]=>
    int(28)
    ["Reader"]=>
    int(27)
    ["Twig_Environment"]=>
    int(27)
    ["Swift_Transport"]=>
    int(26)
    ["SimpleXMLElement"]=>
    int(25)
    ["ForeignKey"]=>
    int(23)
    ["Twig_Node"]=>
    int(22)
    ["Criteria"]=>
    int(21)
    ["Shindig_Gadget"]=>
    int(21)
    ["DOMNode"]=>
    int(20)
    ["sfCache"]=>
    int(20)
    ["Zend_Search_Lucene_Storage_Directory"]=>
    int(20)
    ["Swift_Events_SendEvent"]=>
    int(18)
    ["PHP_CodeSniffer_File"]=>
    int(18)
    ["sfForm"]=>
    int(17)
    ["sfApplicationConfiguration"]=>
    int(17)
    ["PDO"]=>
    int(17)
    ["GadgetContext"]=>
    int(16)
    ["PHPUnit_Framework_Test"]=>
    int(16)
    ["SendMessageData"]=>
    int(16)
    ["Doctrine_Collection"]=>
    int(16)
    ["GroupId"]=>
    int(16)
    ["PHPUnit2_Framework_Test"]=>
    int(15)
    ["Twig_Token"]=>
    int(15)
    ["Zend_Search_Lucene_Search_Highlighter_Interface"]=>
    int(13)
    ["sfValidatorBase"]=>
    int(13)
    ["GadgetSpec"]=>
    int(13)
    ["Reference"]=>
    int(13)
    ["sfStorage"]=>
    int(13)
    ["Database"]=>
    int(13)
    ["Swift_Events_TransportChangeEvent"]=>
    int(12)
    ["ColumnMap"]=>
    int(12)
    ["Swift_OutputByteStream"]=>
    int(12)
    ["OutputStream"]=>
    int(11)
    ["Path"]=>
    int(11)
    ["Swift_Events_EventListener"]=>
    int(11)
    ["ValidatorMap"]=>
    int(11)
    ["sfProjectConfiguration"]=>
    int(10)
    ["Diary"]=>
    int(10)
    ["Doctrine_Manager"]=>
    int(10)
    ["sfWidgetFormSchema"]=>
    int(9)
    ["Swift_Mime_ContentEncoder"]=>
    int(9)
    ["ResponseItem"]=>
    int(9)
    ["Zend_Acl_Resource_Interface"]=>
    int(9)
    ["sfGeneratorManager"]=>
    int(9)
    ["sfFormatter"]=>
    int(9)
    ["Zend_Acl_Role_Interface"]=>
    int(9)
    ["Swift_Transport_SmtpAgent"]=>
    int(8)
    ["Doctrine_Relation"]=>
    int(8)
    ["Twig_Node_Expression"]=>
    int(7)
    ["FileSet"]=>
    int(7)
    ["PHPUnit_Framework_TestSuite"]=>
    int(7)
    ["Swift_Mime_Header"]=>
    int(7)
    ["Swift_KeyCache"]=>
    int(7)
    ["Twig_NodeList"]=>
    int(7)
    ["PHPUnit2_Framework_TestSuite"]=>
    int(7)
    ["RemoteContentFetcher"]=>
    int(7)
    ["Swift_Events_EventDispatcher"]=>
    int(6)
    ["DOMXPath"]=>
    int(6)
    ["GeneratorConfig"]=>
    int(6)
    ["sfCommandManager"]=>
    int(6)
    ["HTTP_Request2"]=>
    int(6)
    ["Writer"]=>
    int(6)
    ["Swift_Mime_HeaderEncoder"]=>
    int(6)
    ["Zend_Search_Lucene_Document"]=>
    int(6)
    ["Doctrine_Record_Generator"]=>
    int(6)
    ["Zend_Search_Lucene_Analysis_Token"]=>
    int(6)
    ["Doctrine_Null"]=>
    int(6)
    ["File"]=>
    int(5)
    ["ProviderInfo"]=>
    int(5)
    ["Criterion"]=>
    int(5)
    ["HTTP_Request2_Response"]=>
    int(5)
    ["sfTemplateStorage"]=>
    int(5)
    ["Swift_CharacterReaderFactory"]=>
    int(5)
    ["Zend_Search_Lucene_Search_Query"]=>
    int(5)
    ["AlbumImage"]=>
    int(5)
    ["Task"]=>
    int(5)
    ["sfAction"]=>
    int(5)
    ["FileSelector"]=>
    int(5)
    ["Swift_Mime_HeaderSet"]=>
    int(5)
    ["Platform"]=>
    int(4)
    ["DBAdapter"]=>
    int(4)
    ["DomDocument"]=>
    int(4)
    ["sfWebDebug"]=>
    int(4)
    ["sfRequest"]=>
    int(4)
    ["Doctrine_Template"]=>
    int(4)
    ["opMailRequest"]=>
    int(4)
    ["Swift_Events_EventObject"]=>
    int(4)
    ["Swift_TransportException"]=>
    int(4)
    ["Swift_CharacterStream"]=>
    int(4)
    ["TokenKey"]=>
    int(4)
    ["Cache"]=>
    int(4)
    ["RestRequestItem"]=>
    int(4)
    ["sfValidatedFile"]=>
    int(4)
    ["Swift_StreamFilter"]=>
    int(4)
    ["sfPearEnvironment"]=>
    int(4)
    ["Commandline"]=>
    int(4)
    ["Swift_Spool"]=>
    int(4)
    ["ProjectConfigurator"]=>
    int(4)
    ["RuntimeConfigurable"]=>
    int(4)
    ["AbstractSAXParser"]=>
    int(4)
    ["CollectionOptions"]=>
    int(4)
    ["sfWebResponse"]=>
    int(4)
    ["sfTemplateHelperSet"]=>
    int(4)
    ["Album"]=>
    int(4)
    ["opMailMessage"]=>
    int(4)
    ["UserId"]=>
    int(4)
    ["Zend_Search_Lucene_FSMAction"]=>
    int(4)
    ["Doctrine_Record_Filter"]=>
    int(4)
    ["Swift_Events_CommandEvent"]=>
    int(3)
    ["Zend_Feed_Writer_Entry"]=>
    int(3)
    ["OAuthConsumer"]=>
    int(3)
    ["Swift_Events_ResponseEvent"]=>
    int(3)
    ["GadgetRewriter"]=>
    int(3)
    ["OAuthRequestParams"]=>
    int(3)
    ["UnknownElement"]=>
    int(3)
    ["MakeRequestOptions"]=>
    int(3)
    ["Doctrine_Hydrator_Abstract"]=>
    int(3)
    ["opAuthAdapter"]=>
    int(3)
    ["Doctrine_Cli_Formatter"]=>
    int(3)
    ["sfTemplateEngine"]=>
    int(3)
    ["sfTask"]=>
    int(3)
    ["Twig_TokenStream"]=>
    int(3)
    ["lime_test"]=>
    int(3)
    ["PHPUnit_Framework_AssertionFailedError"]=>
    int(3)
    ["PHPUnit2_Framework_AssertionFailedError"]=>
    int(3)
    ["Swift_Mime_MimeEntity"]=>
    int(3)
    ["sfUser"]=>
    int(3)
    ["Services_Amazon_S3_Resource_Bucket"]=>
    int(3)
    ["DatabaseMap"]=>
    int(3)
    ["sfBrowserBase"]=>
    int(3)
    ["Zend_Acl_Assert_Interface"]=>
    int(3)
    ["SequentialTask"]=>
    int(3)
    ["Swift_Transport_IoBuffer"]=>
    int(3)
    ["InputRequest"]=>
    int(3)
    ["sfValidatorError"]=>
    int(3)
    ["VersionControl_Git"]=>
    int(3)
    ["Zend_Http_Client"]=>
    int(3)
    ["Domain"]=>
    int(2)
    ["ColumnDefaultValue"]=>
    int(2)
    ["Doctrine_Query_Registry"]=>
    int(2)
    ["Community"]=>
    int(2)
    ["Doctrine_Query_Tokenizer"]=>
    int(2)
    ["DOMNodeList"]=>
    int(2)
    ["Zend_Loader_PluginLoader_Interface"]=>
    int(2)
    ["Doctrine_View"]=>
    int(2)
    ["Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface"]=>
    int(2)
    ["Zend_Search_Lucene_Document_Html"]=>
    int(2)
    ["Zend_Feed_Writer_Source"]=>
    int(2)
    ["Zend_Feed_Writer_Deleted"]=>
    int(2)
    ["Zend_Search_Lucene_Field"]=>
    int(2)
    ["Zend_Mime_Part"]=>
    int(2)
    ["Twig_Parser"]=>
    int(2)
    ["Zend_Feed_Writer_Feed"]=>
    int(2)
    ["Zend_Feed_Builder_Interface"]=>
    int(2)
    ["sfWidgetFormSchemaFormatter"]=>
    int(2)
    ["Doctrine_Record_Abstract"]=>
    int(2)
    ["DateTime"]=>
    int(2)
    ["Doctrine_Locator"]=>
    int(2)
    ["Twig_Loader"]=>
    int(2)
    ["Swift_Events_TransportExceptionEvent"]=>
    int(2)
    ["Swift_KeyCache_KeyCacheInputStream"]=>
    int(2)
    ["Doctrine_Query_Abstract"]=>
    int(2)
    ["Twig_ExtensionInterface"]=>
    int(2)
    ["Swift_Plugins_Sleeper"]=>
    int(2)
    ["Swift_Encoder"]=>
    int(2)
    ["sfTestFunctionalBase"]=>
    int(2)
    ["DateTimeZone"]=>
    int(2)
    ["sfContext"]=>
    int(2)
    ["FileWriter"]=>
    int(2)
    ["Smarty"]=>
    int(2)
    ["sfView"]=>
    int(2)
    ["Location"]=>
    int(2)
    ["Twig_Sandbox_SecurityPolicyInterface"]=>
    int(2)
    ["Doctrine_Task"]=>
    int(2)
    ["DOMText"]=>
    int(2)
    ["sfRoute"]=>
    int(2)
    ["SplObserver"]=>
    int(2)
    ["Doctrine_Query_Filter"]=>
    int(2)
    ["sfCommandArgumentSet"]=>
    int(2)
    ["Twig_LoaderInterface"]=>
    int(2)
    ["IoncubeComment"]=>
    int(2)
    ["sfWidgetForm"]=>
    int(2)
    ["Doctrine_Access"]=>
    int(2)
    ["Capsule"]=>
    int(2)
    ["FileBin"]=>
    int(2)
    ["Swift_Mailer_RecipientIterator"]=>
    int(2)
    ["Twig_NodeVisitorInterface"]=>
    int(2)
    ["TemplateLibraryContent"]=>
    int(2)
    ["Services_Amazon_S3_Resource_Object"]=>
    int(2)
    ["RegisterSlot"]=>
    int(2)
    ["sfDatabase"]=>
    int(2)
    ["TableMap"]=>
    int(2)
    ["sfCommandOption"]=>
    int(2)
    ["sfI18N"]=>
    int(2)
    ["sfSecurityUser"]=>
    int(2)
    ["DataRow"]=>
    int(2)
    ["sfIMessageSource"]=>
    int(2)
    ["Doctrine_Configurable"]=>
    int(2)
    ["Profile"]=>
    int(2)
    ["Parameter"]=>
    int(2)
    ["BuildListener"]=>
    int(2)
    ["ProviderKey"]=>
    int(2)
    ["ShindigOAuthRequest"]=>
    int(2)
    ["Doctrine_AuditLog"]=>
    int(2)
    ["sfCommandOptionSet"]=>
    int(2)
    ["ProfileOption"]=>
    int(2)
    ["RequestTime"]=>
    int(2)
    ["sfTemplateLoader"]=>
    int(2)
    ["AbstractHandler"]=>
    int(2)
    ["sfFormField"]=>
    int(2)
    ["Zend_Search_Lucene_Index_FieldInfo"]=>
    int(1)
    ["sfTemplateDebuggerInterface"]=>
    int(1)
    ["ZipArchive"]=>
    int(1)
    ["sfTemplateHelperInterface"]=>
    int(1)
    ["Zend_Search_Lucene_Index_SegmentInfo"]=>
    int(1)
    ["Zend_Search_Lucene_Storage_File"]=>
    int(1)
    ["sfTemplateLoaderInterface"]=>
    int(1)
    ["Zend_Search_Lucene_Index_TermInfo"]=>
    int(1)
    ["Services_Amazon_S3_Resource"]=>
    int(1)
    ["OAuthServiceProvider"]=>
    int(1)
    ["MakeRequest"]=>
    int(1)
    ["DOMnode"]=>
    int(1)
    ["PluginRelease"]=>
    int(1)
    ["RpcRequestItem"]=>
    int(1)
    ["SecurityTokenDecoder"]=>
    int(1)
    ["opOpenSocialProfileExport"]=>
    int(1)
    ["sfOutputEscaper"]=>
    int(1)
    ["Options"]=>
    int(1)
    ["OAuthRequest"]=>
    int(1)
    ["Twig_CompilerInterface"]=>
    int(1)
    ["PEAR_ChannelFile"]=>
    int(1)
    ["Zend_Validate_Hostname"]=>
    int(1)
    ["Zend_Search_Lucene_Search_Query_Phrase"]=>
    int(1)
    ["Zend_Search_Lucene_Search_Similarity"]=>
    int(1)
    ["Zend_Search_Lucene_Search_QueryEntry"]=>
    int(1)
    ["Zend_Validate_Ip"]=>
    int(1)
    ["Twig_LexerInterface"]=>
    int(1)
    ["SplSubject"]=>
    int(1)
    ["Twig_ParserInterface"]=>
    int(1)
    ["Zend_Validate_Interface"]=>
    int(1)
    ["Services_Amazon_S3"]=>
    int(1)
    ["AppData"]=>
    int(1)
    ["AvailableTask"]=>
    int(1)
    ["ConditionBase"]=>
    int(1)
    ["ElseIfTask"]=>
    int(1)
    ["Properties"]=>
    int(1)
    ["SimpleTestFormatterElement"]=>
    int(1)
    ["FormatterElement"]=>
    int(1)
    ["InputStream"]=>
    int(1)
    ["Target"]=>
    int(1)
    ["PDOSQLExecTask"]=>
    int(1)
    ["PhingPhpDocumentorSetup"]=>
    int(1)
    ["TstampCustomFormat"]=>
    int(1)
    ["TstampTask"]=>
    int(1)
    ["LineContains"]=>
    int(1)
    ["LineContainsRegExp"]=>
    int(1)
    ["PrefixLines"]=>
    int(1)
    ["ReplaceTokens"]=>
    int(1)
    ["TailFilter"]=>
    int(1)
    ["HeadFilter"]=>
    int(1)
    ["DirectoryScanner"]=>
    int(1)
    ["Comandline"]=>
    int(1)
    ["ExpandProperties"]=>
    int(1)
    ["TranslateGettext"]=>
    int(1)
    ["InputHandler"]=>
    int(1)
    ["BaseObject"]=>
    int(1)
    ["Swift_Message"]=>
    int(1)
    ["sfFormFieldSchema"]=>
    int(1)
    ["Traversable"]=>
    int(1)
    ["sfValidatorSchema"]=>
    int(1)
    ["sfWebDebugPanel"]=>
    int(1)
    ["sfVarLogger"]=>
    int(1)
    ["Gadget"]=>
    int(1)
    ["sfWidget"]=>
    int(1)
    ["sfCommandArgument"]=>
    int(1)
    ["sfResponse"]=>
    int(1)
    ["sfModelGeneratorConfigurationField"]=>
    int(1)
    ["sfFormObject"]=>
    int(1)
    ["Doctrine_Cli"]=>
    int(1)
    ["Doctrine_Migration_Diff"]=>
    int(1)
    ["Doctrine_Migration"]=>
    int(1)
    ["Doctrine_Search"]=>
    int(1)
    ["Doctrine_Adapter_Oracle"]=>
    int(1)
    ["sfDatabaseManager"]=>
    int(1)
    ["sfLogger"]=>
    int(1)
    ["sfLoggerInterface"]=>
    int(1)
    ["PEAR_Config"]=>
    int(1)
    ["ReplaceRegexp"]=>
    int(1)
    ["StripPhpComments"]=>
    int(1)
    ["Swift_Plugins_Timer"]=>
    int(1)
    ["Swift_Transport_MailInvoker"]=>
    int(1)
    ["Swift_ReplacementFilterFactory"]=>
    int(1)
    ["Zend_Feed_Builder_Header_Itunes"]=>
    int(1)
    ["Swift_Plugins_Reporter"]=>
    int(1)
    ["Swift_Plugins_Pop_Pop3Connection"]=>
    int(1)
    ["sfValidatorFDToken"]=>
    int(1)
    ["Swift_FileStream"]=>
    int(1)
    ["Swift_Mime_HeaderFactory"]=>
    int(1)
    ["Swift_Plugins_Logger"]=>
    int(1)
    ["Zend_Feed_Element"]=>
    int(1)
    ["Zend_Db_Table_Abstract"]=>
    int(1)
    ["Zend_Mail_Transport_Abstract"]=>
    int(1)
    ["Zend_Mime"]=>
    int(1)
    ["Zend_Registry"]=>
    int(1)
    ["Zend_Search_Lucene_Analysis_TokenFilter"]=>
    int(1)
    ["Zend_Mail_Protocol_Abstract"]=>
    int(1)
    ["Zend_Mail"]=>
    int(1)
    ["Zend_Cache_Core"]=>
    int(1)
    ["Zend_Feed_Abstract"]=>
    int(1)
    ["Zend_Http_Response"]=>
    int(1)
    ["Zend_Mail_Storage_Folder"]=>
    int(1)
    ["lime_harness"]=>
    int(1)
    ["sfCommandApplication"]=>
    int(1)
    ["XsltFilter"]=>
    int(1)
    ["PhingFilterReader"]=>
    int(1)
    ["DirSet"]=>
    int(1)
    ["TokenReader"]=>
    int(1)
    ["XincludeFilter"]=>
    int(1)
    ["TabToSpaces"]=>
    int(1)
    ["StripLineBreaks"]=>
    int(1)
    ["StripLineComments"]=>
    int(1)
    ["StripWhitespace"]=>
    int(1)
    ["TidyFilter"]=>
    int(1)
    ["ProjectComponent"]=>
    int(1)
    ["PDOStatement"]=>
    int(1)
    ["Validator"]=>
    int(1)
    ["VendorInfo"]=>
    int(1)
    ["Fileset"]=>
    int(1)
    ["OMBuilder"]=>
    int(1)
    ["Index"]=>
    int(1)
    ["ColumnValue"]=>
    int(1)
    ["Join"]=>
    int(1)
    ["DebugPDO"]=>
    int(1)
    ["Inheritance"]=>
    int(1)
    ["Zend_Search_Lucene_Analysis_Analyzer"]=>
    int(1)
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment