API15

Difference between revisions of "JURI/getInstance"

From Joomla! Documentation

< API15:JURI
(New page: ===Description=== Returns a reference to a global JURI object, only creating it if it doesn't already exist. <span class="editsection" style="font-size:76%;"> <nowiki>[</nowiki>[[Desc...)
 
m (preparing for archive only)
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
  
 
<span class="editsection" style="font-size:76%;">
 
<span class="editsection" style="font-size:76%;">
<nowiki>[</nowiki>[[Description:JURI/getInstance|Edit Descripton]]<nowiki>]</nowiki>
+
<nowiki>[<! removed edit link to red link >]</nowiki>
 
</span>
 
</span>
  
{{Description:JURI/getInstance}}
+
<! removed transcluded page call, red link never existed >
  
 
===Syntax===
 
===Syntax===
Line 100: Line 100:
  
 
<span class="editsection" style="font-size:76%;">
 
<span class="editsection" style="font-size:76%;">
<nowiki>[</nowiki>[[SeeAlso:JURI/getInstance|Edit See Also]]<nowiki>]</nowiki>
+
<nowiki>[<! removed edit link to red link >]</nowiki>
 
</span>
 
</span>
{{SeeAlso:JURI/getInstance}}
+
<! removed transcluded page call, red link never existed >
  
 
===Examples===
 
===Examples===
<CodeExamplesForm />
+
=== Code Examples ===
 
<dpl>
 
<dpl>
 
  noresultsheader=\n
 
  noresultsheader=\n
 
  category=getInstance
 
  category=getInstance
 
  category=JURI
 
  category=JURI
  category=CodeExample
+
  namespace=CodeExample
 
  category=MethodExample
 
  category=MethodExample
 
  include=*
 
  include=*
 
  format= ,,,
 
  format= ,,,
 
</dpl>
 
</dpl>
 +
[[Category:Archived pages API15]]

Latest revision as of 20:14, 24 March 2017

The "API15" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Description[edit]

Returns a reference to a global JURI object, only creating it if it doesn't already exist.

[<! removed edit link to red link >]

<! removed transcluded page call, red link never existed >

Syntax[edit]

& getInstance($uri= 'SERVER')
Parameter Name Default Value Description
$uri 'SERVER' $uri The URI to parse. [optional: if null uses script URI]

Returns[edit]

The URI object. 

Defined in[edit]

libraries/joomla/environment/uri.php

Importing[edit]

jimport( 'joomla.environment.uri' );

Source Body[edit]

function &getInstance($uri = 'SERVER')
{
        static $instances = array();

        if (!isset ($instances[$uri]))
        {
                // Are we obtaining the URI from the server?
                if ($uri == 'SERVER')
                {
                        // Determine if the request was over SSL (HTTPS)
                        if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) {
                                $https = 's://';
                        } else {
                                $https = '://';
                        }

                        /*
                         * Since we are assigning the URI from the server variables, we first need
                         * to determine if we are running on apache or IIS.  If PHP_SELF and REQUEST_URI
                         * are present, we will assume we are running on apache.
                         */
                        if (!empty ($_SERVER['PHP_SELF']) && !empty ($_SERVER['REQUEST_URI'])) {

                                /*
                                 * To build the entire URI we need to prepend the protocol, and the http host
                                 * to the URI string.
                                 */
                                $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

                        /*
                         * Since we do not have REQUEST_URI to work with, we will assume we are
                         * running on IIS and will therefore need to work some magic with the SCRIPT_NAME and
                         * QUERY_STRING environment variables.
                         */
                        }
                         else
                         {
                                // IIS uses the SCRIPT_NAME variable instead of a REQUEST_URI variable... thanks, MS
                                $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];

                                // If the query string exists append it to the URI string
                                if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
                                        $theURI .= '?' . $_SERVER['QUERY_STRING'];
                                }
                        }

                        // Now we need to clean what we got since we can't trust the server var
                        $theURI = urldecode($theURI);
                        $theURI = str_replace('"', '&quot;',$theURI);
                        $theURI = str_replace('<', '&lt;',$theURI);
                        $theURI = str_replace('>', '&gt;',$theURI);
                        $theURI = preg_replace('/eval\((.*)\)/', '', $theURI);
                        $theURI = preg_replace('/[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']/', '""', $theURI);
                }
                else
                {
                        // We were given a URI
                        $theURI = $uri;
                }

                // Create the new JURI instance
                $instances[$uri] = new JURI($theURI);
        }
        return $instances[$uri];
}

[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >

Examples[edit]

Code Examples[edit]