Remembering TYPO3 namespaces

Is it just me or is everyone kind of lost in those gazillions of classes and namespaces within the TYPO3 API? Wouldn't it be nice to just know them?

I gave up.

Here are some classes I often should but in fact don't remember:

Basics

t3lib_div is no more:

\TYPO3\CMS\Core\Utility\GeneralUtility

and t3lib_extMgm was renamed to:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility

which should not be confused with Tx_Extbase_Utility_Extension:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility

(which deals with ExtBase related stuff such as mapping controllers to plugins)

ExtBase

You want to create a controller? Extend:

\TYPO3\CMS\Extbase\Mvc\Controller\ActionController

A model? Repository? Here it is:

\TYPO3\CMS\Extbase\Persistence\Repository
\TYPO3\CMS\Extbase\DomainObject\AbstractEntity

Want to fetch some pages from the database? You might want to use this special repository (formerly known as t3lib_pageSelect):

\TYPO3\CMS\Frontend\Page\PageRepository

Luckily, for frontend users and groups there are proper models and repositories:

\TYPO3\CMS\Extbase\Domain\Model\FrontendUser
\TYPO3\CMS\Extbase\Persistence\Repository\FrontendUserRepository

\TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup
\TYPO3\CMS\Extbase\Persistence\Repository\FrontendUserGroupRepository

… and there are some more in typo3/sysext/extbase/Classes/Domain/

Another useful class is the ObjectManager which replaces the makeInstance() function. This is especially useful in classes that don't support @inject annotations.

\TYPO3\CMS\Extbase\Object\ObjectManager

Last but not least I want to mention the ExtBase Bootstrapper, which can be used to call ExtBase plugins from TypoScript (formerly called tx_extbase_core_bootstrap):

\TYPO3\CMS\Extbase\Core\Bootstrap

More?

There's always more of course, but those classes are the ones I stumble upon most of the time.

If you need more, I would start with the collection of functions typically used and nice to know in the official TYPO3 documentation. And of course there is always TYPO3 developers' worst friend: The API documentation.