diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index b9a31e5..0000000 --- a/docs/404.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - Page not found | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/ArrayAccess.html b/docs/ArrayAccess.html new file mode 100644 index 0000000..168edae --- /dev/null +++ b/docs/ArrayAccess.html @@ -0,0 +1,364 @@ + + + + + + + + Interface ArrayAccess | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface ArrayAccess +

+ + + + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/ArrayIterator.html b/docs/ArrayIterator.html new file mode 100644 index 0000000..ee139b7 --- /dev/null +++ b/docs/ArrayIterator.html @@ -0,0 +1,986 @@ + + + + + + + + Class ArrayIterator | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class ArrayIterator +

+ + + + + + + + + + + +
implements +SeekableIterator, ArrayAccess, Serializable, Countable
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Countable.html b/docs/Countable.html new file mode 100644 index 0000000..05286a6 --- /dev/null +++ b/docs/Countable.html @@ -0,0 +1,260 @@ + + + + + + + + Interface Countable | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Countable +

+ + + + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + +
Methods
+ + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Exception.html b/docs/Exception.html new file mode 100644 index 0000000..353ad10 --- /dev/null +++ b/docs/Exception.html @@ -0,0 +1,552 @@ + + + + + + + + Class Exception | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class Exception +

+ + + + + + + + + + + +
implements +Throwable
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/InvalidArgumentException.html b/docs/InvalidArgumentException.html new file mode 100644 index 0000000..48a9849 --- /dev/null +++ b/docs/InvalidArgumentException.html @@ -0,0 +1,260 @@ + + + + + + + + Class InvalidArgumentException | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class InvalidArgumentException +

+ + + + + + + + + + + +
extends +LogicException
+ +
+ +
+ +
+ +
+ + + + + + + + + + + +
Methods inherited from Exception
+__construct(), __wakeup(), getMessage(), getCode(), getFile(), getLine(), getTrace(), getPrevious(), getTraceAsString(), __toString()
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Iterator.html b/docs/Iterator.html new file mode 100644 index 0000000..13d9976 --- /dev/null +++ b/docs/Iterator.html @@ -0,0 +1,395 @@ + + + + + + + + Interface Iterator | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Iterator +

+ + + + + + + + +
extends +Traversable
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/IteratorAggregate.html b/docs/IteratorAggregate.html new file mode 100644 index 0000000..7047b4e --- /dev/null +++ b/docs/IteratorAggregate.html @@ -0,0 +1,262 @@ + + + + + + + + Interface IteratorAggregate | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface IteratorAggregate +

+ + + + + + + + +
extends +Traversable
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + +
Methods
+ + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/LogicException.html b/docs/LogicException.html new file mode 100644 index 0000000..2cdf199 --- /dev/null +++ b/docs/LogicException.html @@ -0,0 +1,254 @@ + + + + + + + + Class LogicException | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class LogicException +

+ + + + + + + + + + + +
extends +Exception
+ +
+ +
+ +
+ +
+ + + + + + + + + + +
Methods inherited from Exception
+__construct(), __wakeup(), getMessage(), getCode(), getFile(), getLine(), getTrace(), getPrevious(), getTraceAsString(), __toString()
+ + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/OutOfRangeException.html b/docs/OutOfRangeException.html new file mode 100644 index 0000000..cb9a85d --- /dev/null +++ b/docs/OutOfRangeException.html @@ -0,0 +1,260 @@ + + + + + + + + Class OutOfRangeException | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class OutOfRangeException +

+ + + + + + + + + + + +
extends +LogicException
+ +
+ +
+ +
+ +
+ + + + + + + + + + + +
Methods inherited from Exception
+__construct(), __wakeup(), getMessage(), getCode(), getFile(), getLine(), getTrace(), getPrevious(), getTraceAsString(), __toString()
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/RangeException.html b/docs/RangeException.html new file mode 100644 index 0000000..9e304af --- /dev/null +++ b/docs/RangeException.html @@ -0,0 +1,260 @@ + + + + + + + + Class RangeException | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class RangeException +

+ + + + + + + + + + + +
extends +RuntimeException
+ +
+ +
+ +
+ +
+ + + + + + + + + + + +
Methods inherited from Exception
+__construct(), __wakeup(), getMessage(), getCode(), getFile(), getLine(), getTrace(), getPrevious(), getTraceAsString(), __toString()
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/RuntimeException.html b/docs/RuntimeException.html new file mode 100644 index 0000000..94e0b54 --- /dev/null +++ b/docs/RuntimeException.html @@ -0,0 +1,249 @@ + + + + + + + + Class RuntimeException | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class RuntimeException +

+ + + + + + + + + + + +
extends +Exception
+ +
+ +
+ +
+ +
+ + + + + + + + + + +
Methods inherited from Exception
+__construct(), __wakeup(), getMessage(), getCode(), getFile(), getLine(), getTrace(), getPrevious(), getTraceAsString(), __toString()
+ + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/SeekableIterator.html b/docs/SeekableIterator.html new file mode 100644 index 0000000..1347cfc --- /dev/null +++ b/docs/SeekableIterator.html @@ -0,0 +1,278 @@ + + + + + + + + Interface SeekableIterator | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface SeekableIterator +

+ + + + + + + + +
extends +Iterator
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + +
Methods
+ + + + + + + +
Methods inherited from Iterator
+current(), next(), key(), valid(), rewind()
+ + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Serializable.html b/docs/Serializable.html new file mode 100644 index 0000000..e8217fa --- /dev/null +++ b/docs/Serializable.html @@ -0,0 +1,279 @@ + + + + + + + + Interface Serializable | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Serializable +

+ + + + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Stringable.html b/docs/Stringable.html new file mode 100644 index 0000000..dc5b3b5 --- /dev/null +++ b/docs/Stringable.html @@ -0,0 +1,285 @@ + + + + + + + + Interface Stringable | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Stringable +

+ + + + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + +
Methods
+ + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.Helper.html b/docs/Teto.Object.Helper.html new file mode 100644 index 0000000..a5da578 --- /dev/null +++ b/docs/Teto.Object.Helper.html @@ -0,0 +1,210 @@ + + + + + + + + Class Teto\Object\Helper | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class Teto\Object\Helper +

+ + + + + + + +
+
+

Interface for array compatible object

+
+
+ + +
+ Located at Object/Helper.php
+
+ + + + + + + + + + + + + + +
Methods
+ + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.MethodAlias.html b/docs/Teto.Object.MethodAlias.html new file mode 100644 index 0000000..a027c2e --- /dev/null +++ b/docs/Teto.Object.MethodAlias.html @@ -0,0 +1,201 @@ + + + + + + + + Trait Teto\Object\MethodAlias | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\MethodAlias +

+ + + + +
+
+

Make Property like method

+
+
+ + +
+ Located at Object/MethodAlias.php
+
+ + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.ObjectArray.html b/docs/Teto.Object.ObjectArray.html new file mode 100644 index 0000000..869b8c6 --- /dev/null +++ b/docs/Teto.Object.ObjectArray.html @@ -0,0 +1,549 @@ + + + + + + + + Class Teto\Object\ObjectArray | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class Teto\Object\ObjectArray +

+ + + + + + + + + + + +
implements +ArrayAccess, Countable, IteratorAggregate, ToArrayInterface
+
+

Interface for array compatible object

+
+
+ + +
+ Located at Object/ObjectArray.php
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.PrivateGetter.html b/docs/Teto.Object.PrivateGetter.html new file mode 100644 index 0000000..964bef7 --- /dev/null +++ b/docs/Teto.Object.PrivateGetter.html @@ -0,0 +1,223 @@ + + + + + + + + Trait Teto\Object\PrivateGetter | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\PrivateGetter +

+ + + + +
+
+

Private property behaves like read only.

+

NOTICE: You may not be able to imagine the behavior of this trait in the inherited class.

+
+
+ + +
+ Located at Object/PrivateGetter.php
+
+ + + + + + + + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.PrivateStrictGetter.html b/docs/Teto.Object.PrivateStrictGetter.html new file mode 100644 index 0000000..6e2dcb2 --- /dev/null +++ b/docs/Teto.Object.PrivateStrictGetter.html @@ -0,0 +1,223 @@ + + + + + + + + Trait Teto\Object\PrivateStrictGetter | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\PrivateStrictGetter +

+ + + + +
+
+

Private property behaves like read only.

+

NOTICE: You may not be able to imagine the behavior of this trait in the inherited class.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.PropertyLikeMethod.html b/docs/Teto.Object.PropertyLikeMethod.html new file mode 100644 index 0000000..d8761d6 --- /dev/null +++ b/docs/Teto.Object.PropertyLikeMethod.html @@ -0,0 +1,201 @@ + + + + + + + + Trait Teto\Object\PropertyLikeMethod | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\PropertyLikeMethod +

+ + + + +
+
+

Make Property like method

+
+
+ + + + + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.ReadOnlyTrait.html b/docs/Teto.Object.ReadOnlyTrait.html new file mode 100644 index 0000000..c227868 --- /dev/null +++ b/docs/Teto.Object.ReadOnlyTrait.html @@ -0,0 +1,196 @@ + + + + + + + + Trait Teto\Object\ReadOnlyTrait | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\ReadOnlyTrait +

+ + + + +
+
+

Restrict write to not accessable property.

+
+
+ + +
+ Located at Object/ReadOnlyTrait.php
+
+ + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.ToArrayInterface.html b/docs/Teto.Object.ToArrayInterface.html new file mode 100644 index 0000000..7ca4383 --- /dev/null +++ b/docs/Teto.Object.ToArrayInterface.html @@ -0,0 +1,224 @@ + + + + + + + + Interface Teto\Object\ToArrayInterface | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Teto\Object\ToArrayInterface +

+ + + + +
+
+

Interface for array compatible object

+
+
+ +
+ +
+ + + + + + + + + + + + + + + + +
Methods
+ + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.TypeAssert.html b/docs/Teto.Object.TypeAssert.html new file mode 100644 index 0000000..f081091 --- /dev/null +++ b/docs/Teto.Object.TypeAssert.html @@ -0,0 +1,423 @@ + + + + + + + + Trait Teto\Object\TypeAssert | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\TypeAssert +

+ + + + +
+
+

Argument type assertion methods

+
+
+ + +
+ Located at Object/TypeAssert.php
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.TypeDefinition.html b/docs/Teto.Object.TypeDefinition.html new file mode 100644 index 0000000..d426f26 --- /dev/null +++ b/docs/Teto.Object.TypeDefinition.html @@ -0,0 +1,399 @@ + + + + + + + + Class Teto\Object\TypeDefinition | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Class Teto\Object\TypeDefinition +

+ + + + + + + +
final
+
+

Type Definition syntax

+
+
+ + +
+ Located at Object/TypeDefinition.php
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + + + + + + + + + + + +
Constants
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Properties
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Teto.Object.TypedProperty.html b/docs/Teto.Object.TypedProperty.html new file mode 100644 index 0000000..fa22464 --- /dev/null +++ b/docs/Teto.Object.TypedProperty.html @@ -0,0 +1,302 @@ + + + + + + + + Trait Teto\Object\TypedProperty | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Trait Teto\Object\TypedProperty +

+ + + + +
+
+

Typed property function for class

+
+
+ + +
+ Located at Object/TypedProperty.php
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/Throwable.html b/docs/Throwable.html new file mode 100644 index 0000000..4217346 --- /dev/null +++ b/docs/Throwable.html @@ -0,0 +1,485 @@ + + + + + + + + Interface Throwable | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Throwable +

+ + + + + + + + +
extends +Stringable
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods
+ + + + + + + +
Methods inherited from Stringable
+__toString()
+ + + + + + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/Traversable.html b/docs/Traversable.html new file mode 100644 index 0000000..cd2efc6 --- /dev/null +++ b/docs/Traversable.html @@ -0,0 +1,248 @@ + + + + + + + + Interface Traversable | ξ ^ω^)ξ Teto PHP Objectsystem API + + + + + +
+ +
+ +
+
+ +
+ +
+

+ Interface Traversable +

+ + + + +
+ +
+ +
+ +
+ +
+ + + + + + + +
+ + +
+ +
+ +
+ + diff --git a/docs/assets/elements.js b/docs/assets/elements.js new file mode 100644 index 0000000..360ea5b --- /dev/null +++ b/docs/assets/elements.js @@ -0,0 +1 @@ +window.ApiGen?.resolveElements({"namespace":[["Teto","namespace-Teto.html"],["Teto\\Object","namespace-Teto.Object.html"],["","namespace-none.html"]],"classLike":[["ArrayAccess","ArrayAccess.html",{"method":[["offsetExists","_offsetExists"],["offsetGet","_offsetGet"],["offsetSet","_offsetSet"],["offsetUnset","_offsetUnset"]]}],["ArrayIterator","ArrayIterator.html",{"method":[["__construct","___construct"],["offsetExists","_offsetExists"],["offsetGet","_offsetGet"],["offsetSet","_offsetSet"],["offsetUnset","_offsetUnset"],["append","_append"],["getArrayCopy","_getArrayCopy"],["count","_count"],["getFlags","_getFlags"],["setFlags","_setFlags"],["asort","_asort"],["ksort","_ksort"],["uasort","_uasort"],["uksort","_uksort"],["natsort","_natsort"],["natcasesort","_natcasesort"],["unserialize","_unserialize"],["serialize","_serialize"],["__serialize","___serialize"],["__unserialize","___unserialize"],["rewind","_rewind"],["current","_current"],["key","_key"],["next","_next"],["valid","_valid"],["seek","_seek"],["__debugInfo","___debugInfo"]]}],["Countable","Countable.html",{"method":[["count","_count"]]}],["Exception","Exception.html",{"method":[["__construct","___construct"],["__wakeup","___wakeup"],["getMessage","_getMessage"],["getCode","_getCode"],["getFile","_getFile"],["getLine","_getLine"],["getTrace","_getTrace"],["getPrevious","_getPrevious"],["getTraceAsString","_getTraceAsString"],["__toString","___toString"]]}],["InvalidArgumentException","InvalidArgumentException.html",[]],["Iterator","Iterator.html",{"method":[["current","_current"],["next","_next"],["key","_key"],["valid","_valid"],["rewind","_rewind"]]}],["IteratorAggregate","IteratorAggregate.html",{"method":[["getIterator","_getIterator"]]}],["LogicException","LogicException.html",[]],["OutOfRangeException","OutOfRangeException.html",[]],["RangeException","RangeException.html",[]],["RuntimeException","RuntimeException.html",[]],["SeekableIterator","SeekableIterator.html",{"method":[["seek","_seek"]]}],["Serializable","Serializable.html",{"method":[["serialize","_serialize"],["unserialize","_unserialize"]]}],["Stringable","Stringable.html",{"method":[["__toString","___toString"]]}],["Teto\\Object\\Helper","Teto.Object.Helper.html",{"method":[["toArray","_toArray"]]}],["Teto\\Object\\MethodAlias","Teto.Object.MethodAlias.html",{"method":[["__call","___call"]]}],["Teto\\Object\\ObjectArray","Teto.Object.ObjectArray.html",{"method":[["__construct","___construct"],["fromArray","_fromArray"],["toArray","_toArray"],["toArrayRec","_toArrayRec"],["getObjects","_getObjects"],["count","_count"],["offsetExists","_offsetExists"],["offsetGet","_offsetGet"],["offsetSet","_offsetSet"],["offsetUnset","_offsetUnset"],["getIterator","_getIterator"]]}],["Teto\\Object\\PrivateGetter","Teto.Object.PrivateGetter.html",{"method":[["__get","___get"],["__isset","___isset"]]}],["Teto\\Object\\PrivateStrictGetter","Teto.Object.PrivateStrictGetter.html",{"method":[["__get","___get"],["__isset","___isset"]]}],["Teto\\Object\\PropertyLikeMethod","Teto.Object.PropertyLikeMethod.html",{"method":[["__get","___get"]]}],["Teto\\Object\\ReadOnlyTrait","Teto.Object.ReadOnlyTrait.html",{"method":[["__set","___set"]]}],["Teto\\Object\\ToArrayInterface","Teto.Object.ToArrayInterface.html",{"method":[["toArray","_toArray"]]}],["Teto\\Object\\TypeAssert","Teto.Object.TypeAssert.html",{"method":[["assertValue","_assertValue"],["assertInt","_assertInt"],["assertString","_assertString"],["assertArrayOrObject","_assertArrayOrObject"],["assertInstanceOf","_assertInstanceOf"]]}],["Teto\\Object\\TypeDefinition","Teto.Object.TypeDefinition.html",{"constant":[["RE_PROPERTY","RE_PROPERTY"]],"property":[["expected","$expected"],["is_nullable","$is_nullable"],["is_array","$is_array"],["len","$len"]],"method":[["__construct","___construct"],["parse","_parse"],["__get","___get"]]}],["Teto\\Object\\TypedProperty","Teto.Object.TypedProperty.html",{"method":[["__set","___set"],["__get","___get"],["__isset","___isset"],["__unset","___unset"]]}],["Throwable","Throwable.html",{"method":[["getMessage","_getMessage"],["getCode","_getCode"],["getFile","_getFile"],["getLine","_getLine"],["getTrace","_getTrace"],["getPrevious","_getPrevious"],["getTraceAsString","_getTraceAsString"]]}],["Traversable","Traversable.html",[]]]}) \ No newline at end of file diff --git a/docs/assets/main.css b/docs/assets/main.css new file mode 100644 index 0000000..a43a751 --- /dev/null +++ b/docs/assets/main.css @@ -0,0 +1,569 @@ +/* variables */ +:root { + --font-family-text: Verdana, Geneva CE, lucida, sans-serif; + --font-family-heading: Trebuchet MS, Geneva CE, lucida, sans-serif; + --font-family-code: Consolas, monospace; + --color-heading-dark: #053368; + --color-heading-light: #1e5eb6; + --color-link: #006aeb; + --color-selected: #fffbdd; + --border-color: #cccccc; + --background-color: #ecede5; +} + + +/* reset */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +body, +h1, +h2, +h3, +h4, +p, +pre, +ul, +ol, +li, +td, +th { + margin: 0; + padding: 0; +} + +table { + border-collapse: collapse; +} + +ul, ol { + list-style: none; +} + + +/* base */ +body { + min-height: 100vh; + font: 13px/1.5 var(--font-family-text); + background: #ffffff; + color: #333333; +} + +h1, h2, h3, h4 { + font-family: var(--font-family-heading); + color: var(--color-heading-dark); +} + +h1 { + color: var(--color-heading-light); + font-size: 230%; + font-weight: normal; + margin-top: .3em; +} + +h2 { + color: var(--color-heading-light); + font-size: 150%; + font-weight: normal; + margin-top: .3em; +} + +h1 + h2 { + margin-top: 0; +} + +h3 { + font-size: 1.6em; + font-weight: normal; + margin-bottom: 2px; + margin-top: 1em; +} + +h4 { + font-size: 100%; + font-weight: bold; + padding: 0; + margin-top: 1em; +} + +h4 + * { + margin-left: 1em; +} + +a { + color: var(--color-link); + padding: 3px 1px; + text-decoration: none; +} + +h1 a { + color: var(--color-heading-light); +} + +a:hover, a:active, a:focus, a:hover b, a:hover var { + background-color: var(--color-link); + color: #ffffff !important; +} + +code, var, pre { + font-family: var(--font-family-code); + tab-size: 4; + white-space: pre-wrap; +} + +code.nowrap { + white-space: nowrap; +} + +var, var a { + font-weight: bold; + font-style: normal; + color: #ca8a04; +} + +var a:hover { + background-color: #ca8a04; + color: white; +} + +code a b { + color: #000000; +} + +.deprecated { + text-decoration: line-through; + opacity: 50%; +} + + +/* classLikeDescription */ +.classLikeDescription { + margin-top: 1em; + border: 1px solid var(--border-color); + background-color: var(--background-color); + padding: 10px; +} + + +/* classLikeSection */ +.classLikeSection { + margin-top: 1em; +} + + +/* classLikeSignatureTable */ +.classLikeSignatureTable { + font-size: 16px; +} + +.classLikeSignatureTable th { + font-weight: normal; + text-align: left; + color: var(--color-heading-dark); + vertical-align: top; + padding-right: 12px; +} + + +/* classTree */ +.classTree .classTree li { + position: relative; + margin-left: 19px; + border-left: 1px solid black; + padding-left: 10px; +} + +.classTree .classTree li:last-child { + border-left-color: transparent; +} + +.classTree .classTree li::before { + content: ''; + position: absolute; + left: -1px; + width: 10px; + height: 10px; + border-left: 1px solid black; + border-bottom: 1px solid black; +} + + +/* description */ +.description *:first-child { + margin-top: 0; +} + +.description p { + margin-top: 1em; + padding: 0; +} + +.description ul { + margin-top: 1em; + padding-left: 2em; + list-style-type: disc; +} + + +/* expandable */ +.expandable.collapsed:not(:target) .expandable-expandedView, +.expandable:not(.collapsed:not(:target)) .expandable-collapsedView { + display: none; +} + + +/* elementSummary */ +.elementSummary .table-cell:first-child { + width: 200px; +} + + +/* layout */ +.layout { + display: flex; + flex-direction: row; +} + +.layout-aside { + width: 300px; + position: fixed; + top: 0; + bottom: 0; + overflow-y: auto; + scrollbar-width: none; + background-color: white; + border-right: 1px solid var(--border-color); +} + +.layout-aside::-webkit-scrollbar { + width: 0; + height: 0; +} + +.layout-main { + flex: 1 1 0; + display: flex; + flex-direction: column; + min-width: calc(min(1300px, 100%) - 300px); + max-width: fit-content; + margin-left: 300px; + margin-right: 0; +} + +.layout-content { + flex: 1 1 0; + padding: 0 20px; +} + +.layout-footer { + margin: 20px auto; + padding: 0 20px; + color: #929292; +} + +.layout-rest { + flex: 1 1 0; +} + +.layout-rest > .navbar { + height: 40px; +} + +/* menu */ +.menu { + display: flex; + flex-direction: column; + gap: 20px; + padding: 10px; +} + +.menu ul ul { + padding-left: 10px; +} + +.menu li { + white-space: nowrap; +} + +.menu a { + display: block; + padding: 0 2px; +} + +.menu .active > a { + color: #333333; + background: none; + font-weight: bold; +} + +.menu .active > a:hover, +.menu .active > a:active, +.menu .active > a:focus { + background-color: var(--color-link); +} + +.menu-section > *:first-child { + margin-top: 0; +} + + +/* navbar */ +.navbar { + display: flex; + flex-direction: row; + justify-content: space-between; + flex-wrap: wrap; + align-items: center; + gap: 10px 20px; + padding: 4px 8px 4px 8px; + border-bottom: 1px solid var(--border-color); + background-color: var(--background-color); + font-size: 14px; +} + +.navbar-links { + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; + font-family: var(--font-family-heading); + font-weight: bold; +} + +.navbar-links li.active { + background-color: var(--color-heading-dark); + color: white; +} + +.navbar-links li > * { + display: block; + padding: 6px 6px; + line-height: 1; +} + +.navbar-links li > a { + color: inherit; +} + +.navbar-links li > span { + cursor: default; + color: #888; +} + +.navbar-right { + flex: 0 1 300px; +} + + +/* php */ +.php-tag { + color: #ff0000; + font-weight: bold; +} + +.php-kw { + color: #e71818; + font-weight: bold; +} + +.php-var { + color: #d59401; + font-weight: bold; +} + +.php-num { + color: #cd0673; +} + +.php-str { + color: #008000; +} + +.php-comment { + color: #929292; +} + + +/* search */ +.search { + position: relative; +} + +.search-input { + display: flex; + width: 100%; + border: 1px solid var(--border-color); + border-radius: 0; + padding: 6px; + outline: none; + font-family: inherit; + font-size: inherit; + line-height: 1; +} + +.search-input:focus { + border-color: var(--color-heading-dark); +} + +.search-results { + display: none; + position: absolute; + top: 30px; + width: fit-content; + min-width: 100%; + max-width: calc(100vw - 16px); + overflow: hidden; + background-color: white; + border: 1px solid #888; + z-index: 1; +} + +.search:focus-within .search-results:not(:empty) { + display: block; +} + +.search-results a { + display: block; + color: inherit; + padding: 0 8px; +} + +.search-results li:hover, .search-results li.active { + background-color: var(--color-link); + color: white; +} + + +/* source */ +.source { + font-family: var(--font-family-code); + tab-size: 4; + white-space: pre-wrap; + width: 100%; +} + +.source td:first-child { + width: 0; + white-space: pre; +} + +.source td { + vertical-align: top; +} + +.source-line.selected { + background: var(--color-selected); +} + +.source-lineNum { + user-select: none; + padding-left: 2px; + color: #c0c0c0; +} + +.source-lineNum:hover, .source-lineNum:active, .source-lineNum:focus { + background: transparent; + color: #c0c0c0 !important; +} + + +/* table */ +.table { + width: min-content; + min-width: 100%; + margin: 1.2em 0 2.4em; +} + +.table-heading { + border: 1px solid var(--border-color); + padding: 3px 5px; + background: var(--background-color); + color: var(--color-heading-dark); + font-family: var(--font-family-heading); + font-size: 1.2em; + font-weight: bold; + text-align: left; +} + +.table-heading.sortable { + cursor: pointer; + background-image: url(data:image/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAJAQMAAADnzfU1AAAABlBMVEUAAAAjLTCZnys1AAAAAXRSTlMAQObYZgAAAB5JREFUCNdjYFBgYGAoAOIfDAyMfxiAAEr/AIuD5AFa2gULVBsRKgAAAABJRU5ErkJggg==); + background-position: center right; + background-repeat: no-repeat; +} + +.table-cell, +.table-anchor { + margin: 0; + border: 1px solid var(--border-color); + padding: 3px 10px; + vertical-align: top; +} + +.table-cell:not(:last-child) { + border-right: none; +} + +.table-shrink { + width: 1px; +} + +.table-anchor { + width: 1px; + padding: 3px 6px 3px 0; + border-left: none; +} + +.table-anchor > a { + padding: 0; +} + +.table-spacer { + height: 30px; + background: transparent !important; +} + +.table tr:hover td { + background-color: #f6f6f4; +} + +.table tr:target td { + background-color: var(--color-selected); +} + + +/* mobile */ +@media (max-width: 980px) { + .layout { + flex-direction: column; + } + + .layout-aside { + position: static; + border-right: none; + width: auto; + } + + .layout-rest { + display: none; + } + + .layout-main { + min-width: 100%; + margin-left: 0; + flex-grow: 0; + order: -1; + } + + .menu { + flex-direction: row; + flex-wrap: wrap; + } + + .menu-section { + flex: 1 1 200px; + } +} diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 0000000..6ab1e35 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,243 @@ +// open details +document.querySelectorAll('.expandable').forEach(el => { + el.addEventListener('click', e => { + e.currentTarget.classList.toggle('collapsed') + }) +}) + + +// table sort +document.querySelectorAll('.sortable').forEach(el => { + const table = el.closest('table') + const items = Array.from(table.querySelectorAll('[data-order]')) + let orderBy = 'order' + + items.forEach((item, i) => { + item.dataset.orderNatural = i.toString(10).padStart(3, '0') + }) + + el.addEventListener('click', () => { + items.sort((a, b) => a.dataset[orderBy].localeCompare(b.dataset[orderBy])) + table.append(...items) + orderBy = orderBy === 'order' ? 'orderNatural' : 'order' + }) +}) + + +// search +document.querySelectorAll('.search').forEach(el => { + function tokenize(s, offset = 0) { + return Array.from(s.matchAll(/[A-Z]{2,}|[a-zA-Z][a-z]*|\S/g)).map(it => ([it.index + offset, it[0].toLowerCase()])) + } + + function prefix(a, aa, b, bb) { + let len = 0 + while (aa < a.length && bb < b.length && a[aa++] === b[bb++]) len++ + return len + } + + function matchTokens(elementTokens, queryTokens, i = 0, ii = 0, j = 0, jj = 0) { + if (i === queryTokens.length) { + return [] + + } else if (j === elementTokens.length) { + return null + } + + const [elementOffset, elementToken] = elementTokens[j] + const [, queryToken] = queryTokens[i] + const prefixLength = prefix(queryToken, ii, elementToken, jj) + + const subMatches = ii + prefixLength === queryToken.length + ? matchTokens(elementTokens, queryTokens, i + 1, 0, j, jj + prefixLength) + : jj + prefixLength === elementToken.length + ? matchTokens(elementTokens, queryTokens, i, ii + prefixLength, j + 1, 0) + : null + + return subMatches + ? [[elementOffset + jj, prefixLength], ...subMatches] + : matchTokens(elementTokens, queryTokens, i, ii, j + 1, 0) + } + + function* getResults(query, dataset) { + const queryTokens = tokenize(query) + + for (const [name, path, tokens] of dataset) { + const matches = matchTokens(tokens, queryTokens) + yield* matches !== null ? [[name, path, matches]] : [] + } + } + + function* iteratorSlice(it, length) { + while (length--) { + const item = it.next() + + if (item.done) { + return + } + + yield item.value + } + } + + function* iteratorMap(it, fn) { + for (const item of it) { + yield fn(item) + } + } + + function renderResult([name, path, matches]) { + const li = document.createElement('li') + const anchor = li.appendChild(document.createElement('a')) + anchor.href = path + + let i = 0 + for (const [matchOffset, matchLength] of matches) { + anchor.append(name.slice(i, matchOffset)) + anchor.appendChild(document.createElement('b')).innerText = name.slice(matchOffset, matchOffset + matchLength) + i = matchOffset + matchLength + } + + if (i < name.length) { + anchor.append(name.slice(i)) + } + + return li + } + + const searchInput = el.querySelector('.search-input') + const resultsDiv = el.querySelector('.search-results') + + let dataset = null + let datasetPromise = null + let resultIterator = [][Symbol.iterator]() + let resultNext = resultIterator.next() + let resultItems = [] + let headIndex = 0 + let activeIndex = 0 + + const VISIBLE_COUNT = 20 + + searchInput.addEventListener('input', async () => { + dataset ??= await (datasetPromise ??= new Promise(resolve => { + const script = document.createElement('script') + script.src = el.dataset.elements + document.head.appendChild(script) + window.ApiGen ??= {} + window.ApiGen.resolveElements = (elements) => { + const unified = [ + ...(elements.namespace ?? []).map(([name, path]) => [name, path, tokenize(name)]), + ...(elements.function ?? []).map(([name, path]) => [name, path, tokenize(name)]), + ...(elements.classLike ?? []).flatMap(([classLikeName, path, members]) => [ + [classLikeName, path, tokenize(classLikeName)], + ...(members.constant ?? []).map(([constantName, anchor]) => [`${classLikeName}::${constantName}`, `${path}#${anchor}`, tokenize(`${constantName}`, classLikeName.length + 2)]), + ...(members.property ?? []).map(([propertyName, anchor]) => [`${classLikeName}::\$${propertyName}`, `${path}#${anchor}`, tokenize(`\$${propertyName}`, classLikeName.length + 2)]), + ...(members.method ?? []).map(([methodName, anchor]) => [`${classLikeName}::${methodName}()`, `${path}#${anchor}`, tokenize(`${methodName}()`, classLikeName.length + 2)]), + ]), + ] + + resolve(unified.sort((a, b) => a[0].localeCompare(b[0]))) + } + })) + + resultIterator = iteratorMap(getResults(searchInput.value, dataset), renderResult) + resultItems = Array.from(iteratorSlice(resultIterator, VISIBLE_COUNT)) + resultNext = resultIterator.next() + resultsDiv.replaceChildren(...resultItems) + headIndex = 0 + activeIndex = 0 + resultItems[activeIndex]?.classList.add('active') + }) + + searchInput.addEventListener('keydown', e => { + if (e.key === 'Escape') { + searchInput.blur() + + } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') { + e.preventDefault() + let nextIndex = activeIndex + { ArrowUp: -1, ArrowDown: +1 }[e.key] + + if (nextIndex < 0) { + while (!resultNext.done) { + resultItems.push(resultNext.value) + resultNext = resultIterator.next() + } + + } else if (nextIndex === resultItems.length) { + if (!resultNext.done) { + resultItems.push(resultNext.value) + resultNext = resultIterator.next() + } + } + + nextIndex = (nextIndex + resultItems.length) % resultItems.length + headIndex = Math.max(headIndex, 0, nextIndex - VISIBLE_COUNT + 1) + headIndex = Math.min(headIndex, nextIndex) + + resultsDiv.replaceChildren(...resultItems.slice(headIndex, headIndex + VISIBLE_COUNT)) + resultItems[activeIndex]?.classList.remove('active') + resultItems[nextIndex]?.classList.add('active') + activeIndex = nextIndex + + } else if (e.key === 'Enter') { + e.preventDefault() + const active = resultsDiv.querySelector('.active') ?? resultsDiv.firstElementChild + active?.querySelector('a').click() + } + }) +}) + + +// line selection +let ranges = [] +let last = null +const match = window.location.hash.slice(1).match(/^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$/) + +const handleLinesSelectionChange = () => { + history.replaceState({}, '', '#' + ranges.map(([a, b]) => a === b ? a : `${a}-${b}`).join(',')) + document.querySelectorAll('.source-line.selected').forEach(el => el.classList.remove('selected')) + + for (let [a, b] of ranges) { + for (let i = a; i <= b; i++) { + document.getElementById(`${i}`).classList.add('selected') + } + } +} + +if (match) { + ranges = match[0].split(',').map(range => range.split('-').map(n => Number.parseInt(n))) + ranges = ranges.map(([a, b]) => b === undefined ? [a, a] : [a, b]) + ranges = ranges.filter(([a, b]) => a <= b) + handleLinesSelectionChange() + + const first = Math.max(1, Math.min(...ranges.flat()) - 3) + requestAnimationFrame(() => document.getElementById(`${first}`).scrollIntoView()) +} + +document.querySelectorAll('.source-lineNum').forEach(a => { + a.addEventListener('click', e => { + e.preventDefault() + const line = e.currentTarget.closest('tr') + const n = Number.parseInt(line.id) + const selected = line.classList.contains('selected') && e.ctrlKey + const extending = e.shiftKey && ranges.length > 0 + + if (!e.ctrlKey) { + ranges = extending ? [ranges[ranges.length - 1]] : [] + } + + if (extending) { + ranges[ranges.length - 1] = [Math.min(n, last), Math.max(n, last)] + + } else if (selected) { + ranges = ranges.flatMap(([a, b]) => (a <= n && n <= b) ? [[a, n - 1], [n + 1, b]] : [[a, b]]) + ranges = ranges.filter(([a, b]) => a <= b) + + } else { + ranges[ranges.length] = [n, n] + last = n + } + + handleLinesSelectionChange() + }) +}) diff --git a/docs/class-Teto.Object.Helper.html b/docs/class-Teto.Object.Helper.html deleted file mode 100644 index 01f6e2a..0000000 --- a/docs/class-Teto.Object.Helper.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - Class Teto\Object\Helper | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.MethodAlias.html b/docs/class-Teto.Object.MethodAlias.html deleted file mode 100644 index 26be3e1..0000000 --- a/docs/class-Teto.Object.MethodAlias.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - Trait Teto\Object\MethodAlias | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.ObjectArray.html b/docs/class-Teto.Object.ObjectArray.html deleted file mode 100644 index aeab297..0000000 --- a/docs/class-Teto.Object.ObjectArray.html +++ /dev/null @@ -1,590 +0,0 @@ - - - - - - Class Teto\Object\ObjectArray | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.PrivateGetter.html b/docs/class-Teto.Object.PrivateGetter.html deleted file mode 100644 index fc8fb80..0000000 --- a/docs/class-Teto.Object.PrivateGetter.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - Trait Teto\Object\PrivateGetter | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.PrivateStrictGetter.html b/docs/class-Teto.Object.PrivateStrictGetter.html deleted file mode 100644 index 7c9a577..0000000 --- a/docs/class-Teto.Object.PrivateStrictGetter.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - Trait Teto\Object\PrivateStrictGetter | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.PropertyLikeMethod.html b/docs/class-Teto.Object.PropertyLikeMethod.html deleted file mode 100644 index 032f38e..0000000 --- a/docs/class-Teto.Object.PropertyLikeMethod.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - Trait Teto\Object\PropertyLikeMethod | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.ReadOnly.html b/docs/class-Teto.Object.ReadOnly.html deleted file mode 100644 index 97d8664..0000000 --- a/docs/class-Teto.Object.ReadOnly.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - Trait Teto\Object\ReadOnly | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.ToArrayInterface.html b/docs/class-Teto.Object.ToArrayInterface.html deleted file mode 100644 index b0f5e57..0000000 --- a/docs/class-Teto.Object.ToArrayInterface.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - Interface Teto\Object\ToArrayInterface | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.TypeAssert.html b/docs/class-Teto.Object.TypeAssert.html deleted file mode 100644 index 46367c4..0000000 --- a/docs/class-Teto.Object.TypeAssert.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - Trait Teto\Object\TypeAssert | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.TypeDefinition.html b/docs/class-Teto.Object.TypeDefinition.html deleted file mode 100644 index e5269a2..0000000 --- a/docs/class-Teto.Object.TypeDefinition.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - Class Teto\Object\TypeDefinition | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/class-Teto.Object.TypedProperty.html b/docs/class-Teto.Object.TypedProperty.html deleted file mode 100644 index 18c2dd8..0000000 --- a/docs/class-Teto.Object.TypedProperty.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - Trait Teto\Object\TypedProperty | ξ ^ω^)ξ Teto PHP Objectsystem - - - - - - -
- -
- -
- - - - - - diff --git a/docs/elementlist.js b/docs/elementlist.js deleted file mode 100644 index 3f312f4..0000000 --- a/docs/elementlist.js +++ /dev/null @@ -1,3 +0,0 @@ - -var ApiGen = ApiGen || {}; -ApiGen.elements = [["c","Teto\\Object\\Helper"],["c","Teto\\Object\\MethodAlias"],["c","Teto\\Object\\ObjectArray"],["c","Teto\\Object\\PrivateGetter"],["c","Teto\\Object\\PrivateStrictGetter"],["c","Teto\\Object\\PropertyLikeMethod"],["c","Teto\\Object\\ReadOnly"],["c","Teto\\Object\\ToArrayInterface"],["c","Teto\\Object\\TypeAssert"],["c","Teto\\Object\\TypeDefinition"],["c","Teto\\Object\\TypedProperty"]]; diff --git a/docs/index.html b/docs/index.html index fbafa35..01e7785 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,171 +1,90 @@ - - + + + + - ξ ^ω^)ξ Teto PHP Objectsystem - - - + ξ ^ω^)ξ Teto PHP Objectsystem API + + - -
-