2024-03-26 20:10:30 +01:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< title > PHP Basics< / title >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< base href = "../../" >
< link rel = "icon" href = "images/favicon.ico" / >
< link rel = "stylesheet" href = "css/normalize.css" >
< link rel = "stylesheet" href = "css/base.css" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" >
< link href = "https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel = "stylesheet" >
< link href = "https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel = "stylesheet" >
< link rel = "stylesheet" href = "css/template.css" >
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity = "sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin = "anonymous" / >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css" >
< script src = "https://cdn.jsdelivr.net/npm/fuse.js@3.4.6" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2" > < / script >
< script src = "js/template.js" > < / script >
< script src = "js/search.js" > < / script >
< script defer src = "js/searchIndex.js" > < / script >
< / head >
< body id = "top" >
< header class = "phpdocumentor-header phpdocumentor-section" >
< h1 class = "phpdocumentor-title" > < a href = "" class = "phpdocumentor-title__link" > PHP Basics< / a > < / h1 >
< input class = "phpdocumentor-header__menu-button" type = "checkbox" id = "menu-button" name = "menu-button" / >
< label class = "phpdocumentor-header__menu-icon" for = "menu-button" >
< i class = "fas fa-bars" > < / i >
< / label >
< section data-search-form class = "phpdocumentor-search" >
< label >
< span class = "visually-hidden" > Search for< / span >
< svg class = "phpdocumentor-search__icon" width = "21" height = "20" viewBox = "0 0 21 20" fill = "none" xmlns = "http://www.w3.org/2000/svg" >
< circle cx = "7.5" cy = "7.5" r = "6.5" stroke = "currentColor" stroke-width = "2" / >
< line x1 = "12.4892" y1 = "12.2727" x2 = "19.1559" y2 = "18.9393" stroke = "currentColor" stroke-width = "3" / >
< / svg >
< input type = "search" class = "phpdocumentor-field phpdocumentor-search__field" placeholder = "Loading .." disabled / >
< / label >
< / section >
< nav class = "phpdocumentor-topnav" >
< ul class = "phpdocumentor-topnav__menu" >
< li class = "phpdocumentor-topnav__menu-item -menu" >
< a href = "https://packagist.org/packages/opencultureconsulting/basics" >
< span >
< i class = "fab fa-php" > < / i >
< / span >
< / a >
< / li >
< li class = "phpdocumentor-topnav__menu-item -menu" >
< a href = "https://github.com/opencultureconsulting/php-basics" >
< span >
< i class = "fab fa-github" > < / i >
< / span >
< / a >
< / li >
< / ul >
< / nav >
< / header >
< main class = "phpdocumentor" >
< div class = "phpdocumentor-section" >
< input class = "phpdocumentor-sidebar__menu-button" type = "checkbox" id = "sidebar-button" name = "sidebar-button" / >
< label class = "phpdocumentor-sidebar__menu-icon" for = "sidebar-button" >
Menu
< / label >
< aside class = "phpdocumentor-column -three phpdocumentor-sidebar" >
< section class = "phpdocumentor-sidebar__category -documentation" >
< h2 class = "phpdocumentor-sidebar__category-header" > Documentation< / h2 >
< h4 class = "phpdocumentor-sidebar__root-namespace" >
< a href = "guides/overview/index.html#overview" class = "" > Overview< / a >
< / h4 >
< ul class = "phpdocumentor-list" >
< li >
< a href = "guides/overview/datastructures.html#typed-datastructures" class = "" > Typed Datastructures< / a >
< / li >
< li >
< a href = "guides/overview/errorhandlers.html#error-and-exception-handlers" class = "" > Error and Exception Handlers< / a >
< / li >
< li >
< a href = "guides/overview/interfaces.html#interface-traits" class = "" > Interface Traits< / a >
< / li >
< li >
< a href = "guides/overview/traits.html#traits" class = "" > Traits< / a >
< / li >
< / ul >
< h4 class = "phpdocumentor-sidebar__root-namespace" >
< a href = "guides/usage/index.html#user-guide" class = "" > User Guide< / a >
< / h4 >
< ul class = "phpdocumentor-list" >
< li >
< a href = "guides/usage/requirements.html#requirements" class = "" > Requirements< / a >
< / li >
< li >
< a href = "guides/usage/installation.html#installation" class = "" > Installation< / a >
< / li >
< / ul >
< h4 class = "phpdocumentor-sidebar__root-namespace" >
< a href = "guides/changelog.html#changelog" class = "" > Changelog< / a >
< / h4 >
< / section >
< section class = "phpdocumentor-sidebar__category -namespaces" >
< h2 class = "phpdocumentor-sidebar__category-header" > Namespaces< / h2 >
< h4 class = "phpdocumentor-sidebar__root-namespace" >
< a href = "namespaces/occ.html" class = "" > OCC< / a >
< / h4 >
< ul class = "phpdocumentor-list" >
< li >
< a href = "namespaces/occ-basics.html" class = "" > Basics< / a >
< / li >
< / ul >
< / section >
< section class = "phpdocumentor-sidebar__category -packages" >
< h2 class = "phpdocumentor-sidebar__category-header" > Packages< / h2 >
< h4 class = "phpdocumentor-sidebar__root-namespace" >
< a href = "packages/Basics.html" class = "" > Basics< / a >
< / h4 >
< ul class = "phpdocumentor-list" >
< li >
< a href = "packages/Basics-DataStructures.html" class = "" > DataStructures< / a >
< / li >
< li >
< a href = "packages/Basics-ErrorHandlers.html" class = "" > ErrorHandlers< / a >
< / li >
< li >
< a href = "packages/Basics-Interfaces.html" class = "" > Interfaces< / a >
< / li >
< li >
< a href = "packages/Basics-Traits.html" class = "" > Traits< / a >
< / li >
< / ul >
< / section >
< section class = "phpdocumentor-sidebar__category -reports" >
< h2 class = "phpdocumentor-sidebar__category-header" > Reports< / h2 >
< h3 class = "phpdocumentor-sidebar__root-package" > < a href = "reports/deprecated.html" > Deprecated< / a > < / h3 >
< h3 class = "phpdocumentor-sidebar__root-package" > < a href = "reports/errors.html" > Errors< / a > < / h3 >
< h3 class = "phpdocumentor-sidebar__root-package" > < a href = "reports/markers.html" > Markers< / a > < / h3 >
< / section >
< section class = "phpdocumentor-sidebar__category -indices" >
< h2 class = "phpdocumentor-sidebar__category-header" > Indices< / h2 >
< h3 class = "phpdocumentor-sidebar__root-package" > < a href = "indices/files.html" > Files< / a > < / h3 >
< / section >
< / aside >
< div class = "phpdocumentor-column -nine phpdocumentor-content" >
< div class = "section" id = "interface-traits" >
2024-07-11 13:08:56 +02:00
< h1 > Interface Traits< / h1 >
2024-03-26 20:10:30 +01:00
< div class = "admonition-wrapper" >
< div class = "admonition admonition-sidebar" > < p class = "sidebar-title" > Table of Contents< / p >
2024-07-11 13:08:56 +02:00
< div class = "contents" >
< ul class = "phpdocumentor-list" >
< li class = "toc-item" >
< a href = "guides/overview/interfaces.html#arrayaccesstrait" > ArrayAccessTrait< / a >
< / li >
< li class = "toc-item" >
< a href = "guides/overview/interfaces.html#countabletrait" > CountableTrait< / a >
< / li >
< li class = "toc-item" >
< a href = "guides/overview/interfaces.html#iteratoraggregatetrait" > IteratorAggregateTrait< / a >
< / li >
< li class = "toc-item" >
< a href = "guides/overview/interfaces.html#iteratortrait" > IteratorTrait< / a >
< / li >
< / ul >
< / div >
2024-03-26 20:10:30 +01:00
< / div >
< / div >
2024-07-11 13:08:56 +02:00
< p > This package contains some traits implementing common interfaces, which can easily be used in any class that internally
2024-03-31 17:41:04 +02:00
uses an array for holding its properties or data. They also share the same internal logic to allow combining multiple
traits within the same class.< / p >
2024-07-11 13:08:56 +02:00
2024-03-31 17:41:04 +02:00
< div class = "phpdocumentor-admonition note" >
< svg class = "phpdocumentor-admonition__icon" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" xmlns = "http://www.w3.org/2000/svg" > < path stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" d = "M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z" > < / path > < / svg >
< article >
2024-07-11 13:08:56 +02:00
< p > Internally all interface traits use the < code > $_data< / code >
array, the same as some < a href = "guides/overview/datastructures.html" > Typed Datastructures< / a > and < a href = "guides/overview/traits.html" > Traits< / a > of
2024-03-31 17:41:04 +02:00
this package.< / p >
2024-07-11 13:08:56 +02:00
2024-03-31 17:41:04 +02:00
< / article >
< / div >
< div class = "admonition-wrapper" >
< div class = "admonition admonition-sidebar" > < p class = "sidebar-title" > API Documentation< / p >
< ul >
< li > < a href = "classes/OCC-Basics-Interfaces-ArrayAccessTrait.html" > < abbr title = "\OCC\Basics\Interfaces\ArrayAccessTrait" > ArrayAccessTrait< / abbr > < / a >
< / li >
< / ul >
< / div >
< / div >
2024-03-26 20:10:30 +01:00
< div class = "section" id = "arrayaccesstrait" >
2024-07-11 13:08:56 +02:00
< h2 > ArrayAccessTrait< / h2 >
< p > < em > A generic implementation of the ArrayAccess interface.< / em >
< / p >
2024-03-26 20:10:30 +01:00
2024-07-11 13:08:56 +02:00
< p > The < a href = "https://www.php.net/arrayaccess" > \ArrayAccess< / a > interface allows objects to be accessed like arrays.< / p >
< blockquote >
< p > Usage:< / p >
< pre > < code class = "language-php" > class Foo implements ArrayAccess
2024-03-31 17:41:04 +02:00
{
use \OCC\Basics\Interfaces\ArrayAccessTrait;
2024-07-11 13:08:56 +02:00
}< / code > < / pre >
< / blockquote >
2024-03-31 17:41:04 +02:00
< div class = "admonition-wrapper" >
< div class = "admonition admonition-sidebar" > < p class = "sidebar-title" > API Documentation< / p >
< ul >
< li > < a href = "classes/OCC-Basics-Interfaces-CountableTrait.html" > < abbr title = "\OCC\Basics\Interfaces\CountableTrait" > CountableTrait< / abbr > < / a >
< / li >
< / ul >
< / div >
< / div >
2024-03-26 20:10:30 +01:00
< / div >
< div class = "section" id = "countabletrait" >
2024-07-11 13:08:56 +02:00
< h2 > CountableTrait< / h2 >
2024-03-26 20:10:30 +01:00
2024-07-11 13:08:56 +02:00
< p > < em > A generic implementation of the Countable interface.< / em >
< / p >
< p > The < a href = "https://www.php.net/countable" > \Countable< / a > interface allows objects to be used with the < a href = "https://www.php.net/count" > count()< / a > function.< / p >
< blockquote >
< p > Usage:< / p >
< pre > < code class = "language-php" > class Foo implements Countable
2024-03-31 17:41:04 +02:00
{
use \OCC\Basics\Interfaces\CountableTrait;
2024-07-11 13:08:56 +02:00
}< / code > < / pre >
< / blockquote >
2024-03-31 17:41:04 +02:00
< div class = "admonition-wrapper" >
< div class = "admonition admonition-sidebar" > < p class = "sidebar-title" > API Documentation< / p >
< ul >
< li > < a href = "classes/OCC-Basics-Interfaces-IteratorAggregateTrait.html" > < abbr title = "\OCC\Basics\Interfaces\IteratorAggregateTrait" > IteratorAggregateTrait< / abbr > < / a >
< / li >
< / ul >
< / div >
< / div >
2024-03-26 20:10:30 +01:00
< / div >
< div class = "section" id = "iteratoraggregatetrait" >
2024-07-11 13:08:56 +02:00
< h2 > IteratorAggregateTrait< / h2 >
< p > < em > A generic implementation of the IteratorAggregate interface.< / em >
< / p >
< p > The < a href = "https://www.php.net/iteratoraggregate" > \IteratorAggregate< / a > interface creates an external < a href = "https://www.php.net/arrayiterator" > \ArrayIterator< / a > for traversing the object' s internal data array.< / p >
2024-03-26 20:10:30 +01:00
2024-07-11 13:08:56 +02:00
< blockquote >
< p > Usage:< / p >
< pre > < code class = "language-php" > class Foo implements IteratorAggregate
2024-03-31 17:41:04 +02:00
{
use \OCC\Basics\Interfaces\IteratorAggregateTrait;
2024-07-11 13:08:56 +02:00
}< / code > < / pre >
< / blockquote >
2024-03-31 17:41:04 +02:00
< div class = "admonition-wrapper" >
< div class = "admonition admonition-sidebar" > < p class = "sidebar-title" > API Documentation< / p >
< ul >
< li > < a href = "classes/OCC-Basics-Interfaces-IteratorTrait.html" > < abbr title = "\OCC\Basics\Interfaces\IteratorTrait" > IteratorTrait< / abbr > < / a >
< / li >
< / ul >
< / div >
< / div >
2024-03-26 20:10:30 +01:00
< / div >
< div class = "section" id = "iteratortrait" >
2024-07-11 13:08:56 +02:00
< h2 > IteratorTrait< / h2 >
2024-03-26 20:10:30 +01:00
2024-07-11 13:08:56 +02:00
< p > < em > A generic implementation of the Iterator interface.< / em >
< / p >
< p > The < a href = "https://www.php.net/iterator" > \Iterator< / a > interface creates an internal iterator for traversing the object' s data
2024-03-31 17:41:04 +02:00
array.< / p >
2024-07-11 13:08:56 +02:00
< blockquote >
< p > Usage:< / p >
< pre > < code class = "language-php" > class Foo implements Iterator
2024-03-31 17:41:04 +02:00
{
use \OCC\Basics\Interfaces\IteratorTrait;
2024-07-11 13:08:56 +02:00
}< / code > < / pre >
< / blockquote >
2024-03-31 17:41:04 +02:00
2024-03-26 20:10:30 +01:00
< / div >
< / div >
< / div >
< section data-search-results class = "phpdocumentor-search-results phpdocumentor-search-results--hidden" >
< section class = "phpdocumentor-search-results__dialog" >
< header class = "phpdocumentor-search-results__header" >
< h2 class = "phpdocumentor-search-results__title" > Search results< / h2 >
< button class = "phpdocumentor-search-results__close" > < i class = "fas fa-times" > < / i > < / button >
< / header >
< section class = "phpdocumentor-search-results__body" >
< ul class = "phpdocumentor-search-results__entries" > < / ul >
< / section >
< / section >
< / section >
< / div >
2024-07-11 13:08:56 +02:00
< a href = "#top" class = "phpdocumentor-back-to-top" > < i class = "fas fa-chevron-circle-up" > < / i > < / a >
2024-03-26 20:10:30 +01:00
< / main >
< script >
cssVars({});
< / script >
< script src = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js" > < / script >
< / body >
< / html >