qual è la differenza tra site_url () e base_url ()?

Come ho letto in alcune risorse, le funzioni base_url() e site_url() in codeigniter sono quasi le stesse, sebbene la mia versione di codeigniter (2.1.3) non abbia un site_url () nel suo file config.php (nella directory config ).

Eppure ci sono delle differenze tra di loro in qualsiasi modo dal momento che ho visto site_url () con parametri e mai visto base_url () che non ne contiene nessuno?

 echo base_url(); // http://example.com/website echo site_url(); // http://example.com/website/index.php 

se si desidera un accesso URL a una risorsa (come css, js, image), utilizzare base_url() , altrimenti, site_url() è migliore.

per un riferimento dettagliato Controllare questa funzione in CodeIgniter.

 public function site_url($uri = '') { if (empty($uri)) { return $this->slash_item('base_url').$this->item('index_page'); } $uri = $this->_uri_string($uri); if ($this->item('enable_query_strings') === FALSE) { $suffix = isset($this->config['url_suffix']) ? $this->config['url_suffix'] : ''; if ($suffix !== '') { if (($offset = strpos($uri, '?')) !== FALSE) { $uri = substr($uri, 0, $offset).$suffix.substr($uri, $offset); } else { $uri .= $suffix; } } return $this->slash_item('base_url').$this->slash_item('index_page').$uri; } elseif (strpos($uri, '?') === FALSE) { $uri = '?'.$uri; } return $this->slash_item('base_url').$this->item('index_page').$uri; } 

Funzione URL di base.

 public function base_url($uri = '') { return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/'); } 

site_url : restituisce base_url + index_page + uri_string

base_url : restituisce base_url + uri_string

Vedere il codice sorgente di entrambe le funzioni all’indirizzo: https://github.com/EllisLab/CodeIgniter/blob/606fee0e2e0aa6a906db82e77090e91f133d7378/system/core/Config.php

1. site_url

Lo scopo di site_url è che le tue pagine diventino più portabili nel caso in cui il tuo URL cambi. Il site_url appare con il file index.php .

I segmenti possono essere passati facoltativamente alla funzione come stringa o array.

 echo site_url("news/local/123"); 

darà: http://ci.com/index.php/news/local/123

puoi persino passare segmenti come array:

 $segments = array('news', 'local', '123'); echo site_url($segments); 

2. base_url

base_url è senza la index_page o url_suffix viene aggiunto. come site_url , puoi fornire segmenti come una stringa o un array.

Se si desidera un accesso URL a una risorsa, utilizzare base_url è ansible fornire una stringa a un file, ad esempio un’immagine o foglio di stile, altrimenti site_url è sufficiente.

 echo base_url("/images/icons/image.png"); 

site_url () è execindex.php che perchè site_url è migliore come confrontare con base_url.

base_url() che è comunemente usato in Codeigniter può essere usato anche senza l’estensione .php .

site_url() che è comunemente usato nel modello personalizzato di WordPress può essere usato anche quando si chiama il post_title del blog o il nome del file con l’estensione.

Vorrei aggiungere quando usare base_url () e il sito_url (). Fondamentalmente si può usare site_url () durante la creazione di collegamenti per i controller, mentre base_url () può essere usato dove dobbiamo creare url per le risorse come caricare un file css o js o un’immagine.

Quello che preferisco sempre è usare site_url () per creare collegamenti a controllori o ajax urls e base_url () per il caricamento di risorse.