2010-11-11 15 views
0

J'écris une classe en PHP et j'ai besoin que toutes les références que j'écris dans les fonctions de la classe aient un préfixe. C'est ...Créateur de liens PHP OOP?

class MyClass 
{ 
    function echoing() 
    { 
     $class = new LinkMaker(); 
     return $class->create(array('href' => 'popular/books/', 'title' => 'Popular books of 2010')); 
    } 
} 

Et puis dans la classe LinkMaker, j'ajoute un préfixe aux liens .. Est-ce que je veux faire? désolé pour le mauvais anglais

Répondre

1

Je pense que je comprends ce que vous dites. Vous voulez kindof construire le DOM sur le côté serveur. Ci-dessous est une classe PHP 5 surchargée que j'ai écrit qui fait cela. Cela prendra n'importe quel attribut d'ancrage HTML 5.

Utilisation:

<? 
    $links = array(
     new BabyLink(array('href' => '/home', 'name' => 'home', 'title' => 'Home Page', 'label' => 'Home')), 
     new BabyLink(array('href' => '/about', 'name' => 'account', 'title' => 'About This Site', 'label' => 'About')), 
     new BabyLink(array('href' => '/contact', 'name' => 'contact', 'title' => 'How To Contact Us', 'label' => 'Contact')), 
     new BabyLink(array('href' => '/logout', 'name' => 'logout', 'title' => 'Log Out', 'label' => 'Logout')) 
     ); 

foreach ($links as $link) 
    { 
    $link->render(); 
    } 

<? 

/** 
* BabyLink HTML5 Anchor Link Model 
* @author Warren Stevens ([email protected]) 
* @package Baby 
**/ 

class BabyLink 
    { 

    public $id = false; 

    protected $me = array(); 

    public $fields = array('id', 'accesskey', 'class','contenteditable', 'contextmenu', 'data-', 'draggable', 'hidden', 'href', 'hreflang', 'item', 'itemprop', 'label', 'lang', 'media', 'ping', 'rel', 'spellcheck', 'style', 'subject', 'tabindex', 'target', 'title', 'type'); 

    function __construct(array $a) { $this->set($a); } 

    /** 
    * @param string 
    * @param array 
    **/ 
    function __call($k, $args = array()) { return $this->me[$k]; } 

    function get() { return $this->me; } 

    function set(array $a) 
     { 
     foreach($this->fields as $k) { if(isset($a[$k])) { $this->me[$k] = $a[$k];}} 
     $this->id = $this->me['id']; 
     } 

##### PUBLIC 


    public function render() 
     { 
     $str = '<a '; 
     foreach ($this->me as $k => $v) 
      { 
      $str .= $k.'="'.$v.'" '; 
      } 
     $str .= '>'.$this->label().'</a>'; 
     print $str; 
     } 
    }