Open Power Template udostępnia także po stronie szablonu dostęp do modelu obiektowego języka PHP. Parser zezwala na przypisanie blokowi obiektu, a następnie na wywołanie w jego obrębie metod oraz dostęp do pól publicznych. Pełen wykaz funkcji obiektowych dostępny jest poniżej:
Dwie ostatnie opcje są dostępne tylko, gdy włączona jest dyrektywa konfiguracyjna advancedOOP. Aby otrzymać dostęp do statycznych elementów klasy oraz móc tworzyć jej nowe obiekty, należy ją uprzednio zarejestrować w parserze metodą optClass::registerClass(). Korzystanie z obiektu tej samej klasy wymaga jedynie przypisania tego obiektu do jednego z bloków.
W OPT jako operator odwołania się do elementów obiektu/klasy służy jedynie podwójny dwukropek - kompilator z kontekstu odczytuje, czy programista ma na myśli dostęp do elementu statycznego czy do danych obiektu. Poniżej podane są szczegółowe reguły składni:
new klasa. OPT nie zezwala na dynamiczny wybór nazwy w stylu
new $nazwaKlasyze względów bezpieczeństwa, ponieważ nie ma wtedy możliwości sprawdzenia, czy dana klasa jest dopuszczona do użytku w szablonach. Po nazwie klasy można podać w nawiasie listę argumentów dla konstruktora odseparowanych przecinkiem, np.
new klasa($arg1, $arg2). new zwraca obiekt, który można podstawić do dowolnego bloku, np.
@obiekt is new klasa.
clone $object. Wynikiem jest kopia obiektu, którą możemy np. przypisać do bloku lub zmiennej:
@kopia is clone @oryginal.
Jeżeli spróbujemy się odwołać do nieistniejącego elementu obiektu, OPT nie zasygnalizuje nam tego w trakcie kompilacji. Zostaniemy o tym poinformowani poprzez błąd PHP w trakcie wykonania szablonu.
OPT ukrywa przed twórcą szablonów istnienie przestrzeni nazw, które dostępne są od wersji PHP 5.3. Jednak nie zapominajmy, że rejestrując nową klasę lub funkcję, możemy samodzielnie wybrać nazwę, pod jaką będzie ona widoczna. W szczególności oznacza to, że możliwe jest zarejestrowanie np. elementu przestrzeni nazw i zamaskowanie tego faktu poprzez wybranie nowej nazwy. Przykład znajduje się poniżej:
Przykład 2.14. Rejestrowanie elementów przestrzeni nazw
$tpl -> registerClass('klasa', 'przestrzen::klasa');
$tpl -> registerFunction('funkcja', 'przestrzen::funkcja');
...
<p>W szablonie: {klasa::metoda()}, {funkcja()}</p>
Jeżeli nie chcemy udostępniać szablonowi całej klasy statycznej, możemy udostępnić jedynie wybrane metody, rejestrując je jako funkcje:
Przykład 2.15. Rejestrowanie metod statycznych jako funkcji
$tpl -> registerFunction('funkcja', 'klasa::metoda');
...
<p>W szablonie: {funkcja()}</p>