artabro/wire/core/NullPage.php
2024-08-27 11:35:37 +02:00

195 lines
3.6 KiB
PHP

<?php namespace ProcessWire;
/**
* ProcessWire NullPage
*
* #pw-summary NullPage is a type of Page object returned by many API methods to indicate a non-match.
* #pw-body =
* The simplest way to detect a NullPage is typically by checking the value of the `$page->id` property.
* If it happens to be 0 then for most practical purposes, you have a NullPage. A NullPage object
* has all of the same methods and properties as a regular `Page` but there's not much point in
* calling upon them since they will always be empty.
* ~~~~~
* $item = $pages->get("featured=1");
*
* if(!$item->id) {
* // this is a NullPage
* }
*
* if($item instanceof NullPage) {
* // this is a NullPage
* }
* ~~~~~
* #pw-body
*
* Placeholder class for non-existant and non-saveable Page.
* Many API functions return a NullPage to indicate no match.
*
* ProcessWire 3.x, Copyright 2023 by Ryan Cramer
* https://processwire.com
*
* @property int $id The id property will always be 0 for a NullPage.
*
*/
class NullPage extends Page implements WireNull {
/**
* #pw-internal
*
* @return string
*
*/
public function path() { return ''; }
/**
* #pw-internal
*
* @param array $options
* @return string
*
*/
public function url($options = array()) { return ''; }
/**
* #pw-internal
*
* @param string $key
* @param mixed $value
* @return $this
*
*/
public function set($key, $value) { return parent::setForced($key, $value); }
/**
* #pw-internal
*
* @param string $selector
* @return null
*
*/
public function parent($selector = '') { return null; }
/**
* #pw-internal
*
* @param string $selector
* @return PageArray
* @throws WireException
*
*/
public function parents($selector = '') {
return $this->wire()->pages->newPageArray();
}
/**
* #pw-internal
*
* @return string
*
*/
public function __toString() { return ""; }
/**
* #pw-internal
*
* @return bool
*
*/
public function isHidden() { return true; }
/**
* #pw-internal
*
* @return bool
*
*/
public function isNew() { return false; }
/**
* #pw-internal
*
* @return null
*
*/
public function filesManager() { return null; }
/**
* #pw-internal
*
* @return NullPage
* @throws WireException
*
*/
public function ___rootParent() {
return $this->wire()->pages->newNullPage();
}
/**
* #pw-internal
*
* @param string $selector
* @param bool $includeCurrent
* @return PageArray
* @throws WireException
*
*/
public function siblings($selector = '', $includeCurrent = true) {
return $this->wire()->pages->newPageArray();
}
/**
* #pw-internal
*
* @param string $selector
* @param array $options
* @return PageArray
* @throws WireException
*
*/
public function children($selector = '', $options = array()) {
return $this->wire()->pages->newPageArray();
}
/**
* #pw-internal
*
* @param string $type
* @return NullPage
* @throws WireException
*
*/
public function getAccessParent($type = 'view') {
return $this->wire()->pages->newNullPage();
}
/**
* #pw-internal
*
* @param string $type
* @return PageArray
* @throws WireException
*
*/
public function getAccessRoles($type = 'view') {
return $this->wire()->pages->newPageArray();
}
/**
* #pw-internal
*
* @param int|Role|string $role
* @param string $type
* @return bool
*
*/
public function hasAccessRole($role, $type = 'view') { return false; }
/**
* #pw-internal
*
* @param string $what
* @return bool
*
*/
public function isChanged($what = '') { return false; }
}