PHP ООП создатель ссылок? - PullRequest
       16

PHP ООП создатель ссылок?

0 голосов
/ 11 ноября 2010

Я пишу класс на php, и мне нужно, чтобы все ссылки, которые я пишу в функциях класса, имели префикс.То есть ...

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

А потом в классе LinkMaker я добавляю префикс к ссылкам .. Все в порядке, я хочу сделать?извините за плохой английский

1 Ответ

1 голос
/ 11 ноября 2010

Мне кажется, я понимаю, что вы говорите.Вы хотите создать DOM на стороне сервера.

Ниже приведен класс перегруженного PHP 5, который я написал и который делает это.Это займет любой атрибут привязки HTML 5.

Использование:

<?
    $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 (warbaby67@gmail.com)
 * @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;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...