root/trunk/framework/TApplicationComponent.php

Revision 2482, 3.6 kB (checked in by knut, 4 months ago)

updated copyright

  • Property svn:keywords set to Id
Line 
1<?php
2/**
3 * TApplicationComponent class
4 *
5 * @author Qiang Xue <qiang.xue@gmail.com>
6 * @link http://www.pradosoft.com/
7 * @copyright Copyright &copy; 2005-2008 PradoSoft
8 * @license http://www.pradosoft.com/license/
9 * @version $Id$
10 * @package System
11 */
12
13/**
14 * TApplicationComponent class
15 *
16 * TApplicationComponent is the base class for all components that are
17 * application-related, such as controls, modules, services, etc.
18 *
19 * TApplicationComponent mainly defines a few properties that are shortcuts
20 * to some commonly used methods. The {@link getApplication Application}
21 * property gives the application instance that this component belongs to;
22 * {@link getService Service} gives the current running service;
23 * {@link getRequest Request}, {@link getResponse Response} and {@link getSession Session}
24 * return the request and response modules, respectively;
25 * And {@link getUser User} gives the current user instance.
26 *
27 * Besides, TApplicationComponent defines two shortcut methods for
28 * publishing private files: {@link publishAsset} and {@link publishFilePath}.
29 *
30 * @author Qiang Xue <qiang.xue@gmail.com>
31 * @version $Id$
32 * @package System
33 * @since 3.0
34 */
35class TApplicationComponent extends TComponent
36{
37    /**
38     * @return TApplication current application instance
39     */
40    public function getApplication()
41    {
42        return Prado::getApplication();
43    }
44
45    /**
46     * @return IService the current service
47     */
48    public function getService()
49    {
50        return Prado::getApplication()->getService();
51    }
52
53    /**
54     * @return THttpRequest the current user request
55     */
56    public function getRequest()
57    {
58        return Prado::getApplication()->getRequest();
59    }
60
61    /**
62     * @return THttpResponse the response
63     */
64    public function getResponse()
65    {
66        return Prado::getApplication()->getResponse();
67    }
68
69    /**
70     * @return THttpSession user session
71     */
72    public function getSession()
73    {
74        return Prado::getApplication()->getSession();
75    }
76
77    /**
78     * @return IUser information about the current user
79     */
80    public function getUser()
81    {
82        return Prado::getApplication()->getUser();
83    }
84
85    /**
86     * Publishes a private asset and gets its URL.
87     * This method will publish a private asset (file or directory)
88     * and gets the URL to the asset. Note, if the asset refers to
89     * a directory, all contents under that directory will be published.
90     * Also note, it is recommended that you supply a class name as the second
91     * parameter to the method (e.g. publishAsset($assetPath,__CLASS__) ).
92     * By doing so, you avoid the issue that child classes may not work properly
93     * because the asset path will be relative to the directory containing the child class file.
94     *
95     * @param string path of the asset that is relative to the directory containing the specified class file.
96     * @param string name of the class whose containing directory will be prepend to the asset path. If null, it means get_class($this).
97     * @return string URL to the asset path.
98     */
99    public function publishAsset($assetPath,$className=null)
100    {
101        if($className===null)
102            $className=get_class($this);
103        $class=new ReflectionClass($className);
104        $fullPath=dirname($class->getFileName()).DIRECTORY_SEPARATOR.$assetPath;
105        return $this->publishFilePath($fullPath);
106    }
107
108    /**
109     * Publishes a file or directory and returns its URL.
110     * @param string absolute path of the file or directory to be published
111     * @return string URL to the published file or directory
112     */
113    public function publishFilePath($fullPath)
114    {
115        return Prado::getApplication()->getAssetManager()->publishFilePath($fullPath);
116    }
117}
118
119?>
Note: See TracBrowser for help on using the browser.