TYPO3 Logo
TYPO3 Explained
Release: master

Loading data.

  • Quick Links
    • Configuration Overview
    • Database (doctrine-dbal)
    • Dependency Injection
    • Digital Assets Management
    • Fluid
    • Internationalization and Localization
    • Mail API
    • Request Handling (Middlewares)
    • Routing - "Speaking URLs"
    • Security Guidelines
    • Site Handling
  • Index
  • Introduction
  • Extension Development
    • Introduction
    • Extension management
    • System and Local Extensions
    • Files and locations
    • composer.json
    • Declaration File (ext_emconf.php)
    • Configuration Files (ext_tables.php & ext_localconf.php)
    • Naming conventions
    • Extension configuration (ext_conf_template.txt)
    • Extending the TCA array
      • Storing the changes
      • Customization Examples
      • Verifying the TCA
    • Choosing an extension key
    • Creating a new extension
    • Creating a new distribution
    • Adding documentation
    • Publish your extension
    • Other resources
    • Custom Extension Repository

TYPO3 A-Z

  • Ajax
    • Client-side programming
    • Backend
  • Assets (CSS, JavaScript, Media)
  • Authentication
  • Autoloading
  • Backend access control (Users & Roles)
    • Users and groups
    • Password reset functionality
    • Roles
    • Access Control Options
    • Other Options
    • More about file mounts
    • Backend users module
  • Backend modules
    • Backend interface
    • The Backend Template View
    • Backend module API (Extbase)
  • Backend routing
  • Backend user object
  • Bootstrapping
  • Broadcast channels
  • Caching
    • Quick Start for Integrators
    • Configuration
    • Caching Framework Architecture
    • Cache Frontends
    • Cache backends
    • Developer Information
  • Coding Guidelines
    • Introduction
    • PHP Coding Guidelines
      • PHP File Formatting
        • General Requirements for PHP Files
        • File Structure
        • PHP Syntax Formatting
        • Using phpDoc
      • PHP Architecture
        • Modeling Cross Cutting Concerns
          • Static Methods, static Classes, Utility Classes
          • Traits
          • Services
        • Working With Exceptions
        • General Links
      • Coding: Best practices
        • Accessing the Database
        • Singletons
        • Static Methods
        • Localization
        • Unit Tests
        • Handling Deprecation
        • Namespaces and Class Names of User Files
        • Hook Naming
    • JavaScript Coding Guidelines
    • TypeScript Coding Guidelines
    • TypoScript Coding Guidelines
    • TSconfig Coding Guidelines
    • Xliff Coding Guidelines
    • Yaml Coding Guidelines
    • reStructuredText (reST)
  • Configuration
    • Configuration overview
    • Glossary
    • Configuration module
    • Feature toggles
    • $GLOBALS
    • $GLOBALS[‘TYPO3_CONF_VARS’]
    • Global meta information about TYPO3
    • TSconfig
    • TypoScript syntax
      • What Is TypoScript?
      • Syntax
        • Introduction
        • Contexts
        • TypoScript syntax
        • Conditions
        • Includes
      • Sorting out details
        • Parsing, Storing and Executing TypoScript
        • Myths, FAQ and acknowledgements
      • The TypoScript Parser API
        • Introduction
        • Parsing Custom TypoScript
        • Implementing Custom Conditions
    • User settings configuration
      • [‘columns’] Section
      • [‘showitem’] section
      • Extending the user settings
      • View the configuration
    • YAML API
    • YAML syntax
  • Constants
  • Content Elements & Plugins
    • Introduction
    • Creating a custom content element
    • Custom data processors
    • Create Plugins
    • Configure Custom Backend Preview for Content Element
    • Add Elements to the Content Element Wizard
    • Flexforms
    • T3DataStructure
      • Elements
      • Sheet References
      • Parsing a Data Structure
    • Backend layout
    • Best practices
  • Context API and Aspects
  • Context Sensitive Help (CSH)
    • The $TCA_DESCR Array
    • The Language Files for CSH
    • Implementing CSH
  • Crop Variants for Images
    • General Configuration
    • Crop variants configuration per content element
  • Custom file processors
  • Database (Doctrine DBAL)
    • Introduction
    • Configuration
    • Database Structure
    • Upgrade table and field definitions
    • Basic create, read, update, and delete operations (CRUD)
    • Class Overview
    • ConnectionPool
    • QueryBuilder
    • Connection
    • ExpressionBuilder
    • RestrictionBuilder
    • Statement
    • QueryHelper
    • Migrating from TYPO3_DB
    • Various Tips and Tricks
  • Debugging
  • Dependency injection
  • Deprecation
  • File abstraction layer (FAL)
    • Introduction
    • Basic concepts
    • Architecture
      • Overview
      • Folders
      • Database structure
      • Components
      • PSR-14 Events
    • Administration
      • Permissions
      • File storages
      • Maintenance
    • Using FAL
      • Using FAL in the Frontend
      • TCA Definition
      • The StorageRepository Class
      • Working With files, folders and file references
      • Working With Collections
      • Searching for Files
    • File collections
  • Directory structure
  • Enumerations & BitSets
    • How to use enumerations
    • How to use bitsets
  • Environment
  • Error and exception handling
    • Configuration
    • Error Handler
    • Production Exception Handler
    • Debug exception handler
    • Examples
    • How to extend the error and exception handling
  • Events, signals and hooks
    • Extending the TYPO3 Core
    • EventDispatcher (PSR-14 Events)
    • List of Core PSR-14 Events
      • AfterFormEnginePageInitializedEvent
      • AfterHistoryRollbackFinishedEvent
      • AfterPageColumnsSelectedForLocalizationEvent
      • BeforeFormEnginePageInitializedEvent
      • BeforeHistoryRollbackStartEvent
      • ModifyPageLayoutOnLoginProviderSelectionEvent
      • SwitchUserEvent
      • SystemInformationToolbarCollectorEvent
      • AfterGroupsResolvedEvent
      • AfterTcaCompilationEvent
      • ModifyLoadedPageTsConfigEvent
      • AlterTableDefinitionStatementsEvent
      • AppendLinkHandlerElementsEvent
      • IsTableExcludedFromReferenceIndexEvent
      • BrokenLinkAnalysisEvent
      • AfterMailerInitializationEvent
      • AfterPackageActivationEvent
      • AfterPackageDeactivationEvent
      • BeforePackageActivationEvent
      • PackagesMayHaveChangedEvent
      • AfterFileAddedEvent
      • AfterFileAddedToIndexEvent
      • AfterFileContentsSetEvent
      • AfterFileCopiedEvent
      • AfterFileCreatedEvent
      • AfterFileDeletedEvent
      • AfterFileMarkedAsMissingEvent
      • AfterFileMetaDataCreatedEvent
      • AfterFileMetaDataDeletedEvent
      • AfterFileMovedEvent
      • AfterFileProcessingEvent
      • AfterFileRemovedFromIndexEvent
      • AfterFileRenamedEvent
      • AfterFileReplacedEvent
      • AfterFileUpdatedInIndexEvent
      • AfterFolderAddedEvent
      • AfterFolderCopiedEvent
      • AfterFolderDeletedEvent
      • AfterFolderMovedEvent
      • AfterFolderRenamedEvent
      • AfterResourceStorageInitializationEvent
      • BeforeFileAddedEvent
      • BeforeFileContentsSetEvent
      • BeforeFileCopiedEvent
      • BeforeFileCreatedEvent
      • BeforeFileDeletedEvent
      • BeforeFileMovedEvent
      • BeforeFileProcessingEvent
      • BeforeFileRenamedEvent
      • BeforeFileReplacedEvent
      • BeforeFolderAddedEvent
      • BeforeFolderCopiedEvent
      • BeforeFolderDeletedEvent
      • BeforeFolderMovedEvent
      • BeforeFolderRenamedEvent
      • BeforeResourceStorageInitializationEvent
      • EnrichFileMetaDataEvent
      • GeneratePublicUrlForResourceEvent
      • ModifyIconForResourcePropertiesEvent
      • SanitizeFileNameEvent
      • ModifyTreeDataEvent
      • AfterRequestDispatchedEvent
      • BeforeActionCallEvent
      • AfterObjectThawedEvent
      • EntityAddedToPersistenceEvent
      • EntityPersistedEvent
      • EntityRemovedFromPersistenceEvent
      • EntityUpdatedInPersistenceEvent
      • ModifyQueryBeforeFetchingObjectDataEvent
      • ModifyResultAfterFetchingObjectDataEvent
      • AfterExtensionDatabaseContentHasBeenImportedEvent
      • AfterExtensionFilesHaveBeenImportedEvent
      • AfterExtensionStaticDatabaseContentHasBeenImportedEvent
      • AvailableActionsForExtensionEvent
      • ModifyHrefLangTagsEvent
      • LoginConfirmedEvent
      • ModifyLoginFormViewEvent
      • SendRecoveryEmailEvent
      • BeforeImportEvent
      • ModifyLanguagePackRemoteBaseUrlEvent
      • BeforeRecordIsAnalyzedEvent
      • RenderAdditionalContentToRecordListEvent
      • ModifyUrlForCanonicalTagEvent
      • AddJavaScriptModulesEvent
      • AfterCompiledCacheableDataForWorkspaceEvent
      • AfterDataGeneratedForWorkspaceEvent
      • GetVersionedDataEvent
      • SortVersionedDataEvent
    • Signals and slots (deprecated)
    • Hooks
    • JavaScript Event API
      • Regular event
      • Debounce event
      • Throttle event
      • RequestAnimationFrame event
  • Extension scanner
  • Flash messages
  • Fluid
    • Introduction to Fluid
  • FormEngine
    • Introduction
    • Main rendering workflow
    • Data compiling
    • Rendering
  • Form protection tool
  • HTTP request library / Guzzle / PSR-7
  • Icon API
  • Internationalization and localization
    • Introduction
    • Supported languages
    • Managing translations for backend
    • Translation servers
      • Localization with Crowdin
        • Extension integration
        • Online translation with Crowdin
        • Workflow
        • Frequently Asked Questions (FAQ)
      • Localization with Pootle
      • Custom translation servers
    • XLIFF Format
    • Working with XLIFF files
  • JavaScript in TYPO3 Backend
    • RequireJS in the TYPO3 Backend
      • Use RequireJS in your own extension
      • Dependency handling
      • Loading your own or other RequireJS modules
      • Shim Library to Use it as Own RequireJS Modules
    • Client-side templating
    • Various JavaScript modules
      • Modals
      • Multi-step wizard
      • DocumentService (jQuery.ready substitute)
      • SessionStorage wrapper
    • Event Api
    • Navigation via JavaScript
    • JavaScript Form Helpers
  • LinkBrowser
    • LinkBrowser API
    • The LinkHandler API
      • The PageLinkHandler
      • The RecordLinkHandler
      • Implementing a custom LinkHandler
      • `<a href="t3://record?identifier=anIdentifier&amp;uid=456">A link</a>`.
  • Locking API
  • Logging Framework
    • Quickstart
    • Logger
    • Configuration of the logging system
    • The LogRecord model
    • Log Writers
    • Log processors
  • Mail API
  • Mount points
  • Namespaces
  • Page types
    • Introduction
    • Types of pages
    • X-Redirect-By header for pages with redirect types
    • Create new Page Type
  • Pagination
  • Password hashing
  • Request handling (Middlewares)
    • TYPO3 request object
  • Rich text editors (RTE)
    • CKEditor Rich Text Editor
    • Rich text editors in the TYPO3 backend
      • Introduction
      • Plugging in a custom RTE
    • RTE Transformations
      • Introduction
      • Transformation overview
    • Historical Perspective on RTE Transformations
      • Properties and Transformations
      • RTE Transformations in Content Elements
  • Routing - “Speaking URLs” in TYPO3
    • Introduction to Routing
    • Page based Routing
    • Advanced routing configuration (for extensions)
    • Extending Routing
    • Collection of various routing examples
  • Security guidelines
    • Introduction
    • The TYPO3 Security Team
    • General Information
    • Types of Security Threats
    • General guidelines
    • Guidelines for System Administrators
      • Role Definition
      • Integrity of TYPO3 Packages
      • File/directory permissions
      • Restrict access to files on a server-level
      • Directory indexing
      • File extension handling
      • Content security policy
      • Database access
      • Encrypted Client/server Communication
      • Other Services
      • Further Actions
    • Guidelines for TYPO3 integrators
      • Install tool
      • Global TYPO3 configuration options
      • Security-related warnings after login
      • Reports and logs
      • Users and access privileges
      • TYPO3 extensions
      • TypoScript
      • Content elements
    • Guidelines for editors
    • Backup strategy
    • Detect, analyze and repair a hacked site
      • Detect a hacked website
      • Take the website offline
      • Analyzing a hacked site
      • Repair/restore
      • Further actions
  • Search engine optimization (SEO)
    • MetaTag API
    • PageTitle API
    • XML sitemap
  • Services
    • Introduction
    • Using Services
      • Service precedence
      • Simple usage
      • Use with subtypes
      • Calling a chain of services
    • Configuration
      • Override service registration
      • Service configuration
      • Service type configuration
    • Developer’s Guide
      • Introducing a new service type
      • Implementing a service
      • Service API
      • Services API
  • Session handling in TYPO3
    • User session management
    • Session storage framework
  • Site handling
    • Basics
    • Creating a new site
    • Base variants
    • Adding Languages
    • Error handling
    • Writing a custom page error handler
    • Static routes
    • Using environment variables in the site configuration
    • Using site configuration in TypoScript
    • Using site configuration in conditions
    • Site settings
    • CLI tools for site handling
    • PHP API: accessing site configuration
    • Extending site configuration
  • Soft references
  • Symfony Console Commands (cli)
  • Symfony expression language
  • System Categories
  • System registry
  • TCE (TYPO3 Core engine) & DataHandler
    • Introduction
    • Database: DataHandler basics (Formerly Known as TCEmain)
    • Using the DataHandler in scripts
    • The “/record/commit” Route
    • File Functions Basics
    • The “tce_file.php” API
  • Testing
    • History
    • Core testing
    • Extension testing
    • Project testing
    • Writing unit tests
    • Writing functional tests
    • Writing acceptance tests
    • FAQ
  • Upgrade wizards
    • The concept of upgrade wizards
    • Creating Generic Upgrade Wizards
  • Versioning and Workspaces
  • XCLASSes (Extending Classes)
  • Sitemap
  • About This Manual
  • Link Targets

PAGE CONTENTS

  • PHP Coding Guidelines
  1. Start
  2. Coding Guidelines
  3. PHP Coding Guidelines
Edit on GitHub View source

PHP Coding Guidelines¶

  • PHP File Formatting
    • General Requirements for PHP Files
    • File Structure
    • PHP Syntax Formatting
    • Using phpDoc
  • PHP Architecture
    • Modeling Cross Cutting Concerns
      • Static Methods, static Classes, Utility Classes
      • Traits
      • Services
    • Working With Exceptions
    • General Links
  • Coding: Best practices
    • Accessing the Database
    • Singletons
    • Static Methods
    • Localization
    • Unit Tests
    • Handling Deprecation
    • Namespaces and Class Names of User Files
    • Hook Naming
  • Previous
  • Next
  • Contact
  • Issues
  • Repository

Last updated: Dec 08, 2020 17:42

Last rendered: Jan 19, 2021 10:45

TYPO3 Theme 4.4.2

© Copyright since 2000 by the TYPO3 Documentation Team
  • Legal Notice
  • Privacy Policy