diff options
Diffstat (limited to 'lib/prado/framework/TApplicationComponent.php')
-rw-r--r-- | lib/prado/framework/TApplicationComponent.php | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/lib/prado/framework/TApplicationComponent.php b/lib/prado/framework/TApplicationComponent.php new file mode 100644 index 0000000..d58c74c --- /dev/null +++ b/lib/prado/framework/TApplicationComponent.php @@ -0,0 +1,116 @@ +<?php +/** + * TApplicationComponent class + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2015 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT + * @package System + */ + +/** + * TApplicationComponent class + * + * TApplicationComponent is the base class for all components that are + * application-related, such as controls, modules, services, etc. + * + * TApplicationComponent mainly defines a few properties that are shortcuts + * to some commonly used methods. The {@link getApplication Application} + * property gives the application instance that this component belongs to; + * {@link getService Service} gives the current running service; + * {@link getRequest Request}, {@link getResponse Response} and {@link getSession Session} + * return the request and response modules, respectively; + * And {@link getUser User} gives the current user instance. + * + * Besides, TApplicationComponent defines two shortcut methods for + * publishing private files: {@link publishAsset} and {@link publishFilePath}. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @package System + * @since 3.0 + */ +class TApplicationComponent extends TComponent +{ + /** + * @return TApplication current application instance + */ + public function getApplication() + { + return Prado::getApplication(); + } + + /** + * @return IService the current service + */ + public function getService() + { + return Prado::getApplication()->getService(); + } + + /** + * @return THttpRequest the current user request + */ + public function getRequest() + { + return Prado::getApplication()->getRequest(); + } + + /** + * @return THttpResponse the response + */ + public function getResponse() + { + return Prado::getApplication()->getResponse(); + } + + /** + * @return THttpSession user session + */ + public function getSession() + { + return Prado::getApplication()->getSession(); + } + + /** + * @return IUser information about the current user + */ + public function getUser() + { + return Prado::getApplication()->getUser(); + } + + /** + * Publishes a private asset and gets its URL. + * This method will publish a private asset (file or directory) + * and gets the URL to the asset. Note, if the asset refers to + * a directory, all contents under that directory will be published. + * Also note, it is recommended that you supply a class name as the second + * parameter to the method (e.g. publishAsset($assetPath,__CLASS__) ). + * By doing so, you avoid the issue that child classes may not work properly + * because the asset path will be relative to the directory containing the child class file. + * + * @param string path of the asset that is relative to the directory containing the specified class file. + * @param string name of the class whose containing directory will be prepend to the asset path. If null, it means get_class($this). + * @return string URL to the asset path. + */ + public function publishAsset($assetPath,$className=null) + { + if($className===null) + $className=get_class($this); + $class=new ReflectionClass($className); + $fullPath=dirname($class->getFileName()).DIRECTORY_SEPARATOR.$assetPath; + return $this->publishFilePath($fullPath); + } + + /** + * Publishes a file or directory and returns its URL. + * @param string absolute path of the file or directory to be published + * @return string URL to the published file or directory + */ + public function publishFilePath($fullPath, $checkTimestamp=false) + { + return Prado::getApplication()->getAssetManager()->publishFilePath($fullPath, $checkTimestamp); + } +} + |