2011-09-21 90 views
1

我試圖將兩個單獨的PHP函數合併成一個可以在我的Wordpress主題中使用的函數。我使用Wordpress函數來獲取密鑰「_videembed」的帖子元素,然後將其從YouTube網址剪裁到YouTube視頻ID。我將包括前面的功能&我如何使用它們以及我正在使用的功能。非常感謝所有幫助! -Matt幫助合併2 PHP函數(Wordpress)

以前的方法

在主題

<?php 
    $vidurl = get_post_meta($post->ID, "_videoembed", true); 
    $youtube_id = getYouTubeIdFromURL($vidurl); 
    $finalid = trim($youtube_id); 
    echo $finalid; 
?> 

在functions.php的

function getYouTubeIdFromURL($url) 
{ 
$url_string = parse_url($url, PHP_URL_QUERY); 
parse_str($url_string, $args); 
return isset($args['v']) ? $args['v'] : false; 
} 

下面是我是如何TR爲例英合併兩個:

在主題

<?php getvidID(); ?> 

在functions.php的

function getvidID() 
{ 
    $vidurl = get_post_meta($post->ID, "_videoembed", true); 
    $url_string = parse_url($vidurl, PHP_URL_QUERY); 
    parse_str($vidurl_string, $args); 
    return isset($args['v']) ? $args['v'] : false; 
    echo $vidurl; 
} 

正如你所看到的,我用老的方式是相當龐大的,並我試圖精簡事情,以便我的文件更容易使用,並且PHP功能更少。

謝謝!

馬特

回答

0

我會保持功能單元更小,而不是創建一個更大的單一功能。

Splitting a large function爲更小的功能單元是已知的重構模式,稱爲提取方法

合併小函數與重構相反,它旨在保持代碼清潔,易於遵循和維護。

0

函數用法:

<?php get_vid_id($post->ID); ?> 

功能本身:

function get_vid_id($id) 
{ 
    $vidurl = get_post_meta($id, "_videoembed", true); 
    $url_string = parse_url($vidurl, PHP_URL_QUERY); 
    parse_str($vidurl_string, $args); 
    return isset($args['v']) ? $args['v'] : false; 
    echo $vidurl; 
} 

但我建議你使用較少的功能。保持您的代碼清潔。也許創建類?

+0

我將如何創建類?我不知道那麼多的PHP:/ – Matt

+0

通讀[這些](http://php.net/manual/en/language.oop5.php)。當你做'$ post-> ID'時,'$ post'是一個類。 – Blender

+1

更準確地說,'$ post'是一個對象,它是一個類的實例。 – cmbuckley