【问题标题】:Merge 2 existing php functions into one将 2 个现有的 php 函数合并为一个
【发布时间】:2015-05-16 01:51:01
【问题描述】:

我有两个 PHP 函数可以在单独的 php 页面上独立运行。

第一页:

<?php
 function shortURL($url) {
 $ch = curl_init();
 $timeout = 5;
 curl_setopt($ch,CURLOPT_URL,'http://tinyurl.com/api-create.php?url='.$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
 $short_url = curl_exec($ch);
 curl_close($ch);
 return $short_url;
 }
$url = "http://technoflirt.com/tech/2011/01/11/running-php-script-host/";
 $short_url = shortURL($url);
 echo "Actual url =". $url . "<br />";
 echo "Shortened url = <a href=$short_url>$short_url</a>  <br />"; 
?>

第二页是一个现有的通过电子邮件发送信息的 sn-p。我尝试将函数组合在一起,但没有成功,我将函数 shortURL($url) 粘贴到函数 email() 上方,然后粘贴 $url 和 $short_url 并将 echo 语句更改为 $message。这会导致致命错误:PHP 致命错误:调用未定义函数 shortURL() 所以我知道这不起作用。如何成功转换 tinyURL,然后将其合并到函数 email 中?

     function shortURL($url) {
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch,CURLOPT_URL,'http://tinyurl.com/api-create.php?url='.$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $short_url = curl_exec($ch);
        curl_close($ch);
        return $short_url;    

    function email($array, $task, $techinfo,$additionalinfo = array()) {
            $to = $techinfo["EmpHTEmail"];   
            $url = "http://technoflirt.com/tech/2011/01/11/running-php-script-host/";
            $short_url = shortURL($url);
            $subject = ($task == "unschedule") ? '' : ($task == "notify" ? "": "Else Message");
            $message = "";  
                if($task == "unschedule")
                    $message .="Work Order #:" . $array[0]["WorkOrderNum"] . " is cancelled.";
                elseif($task == "notify")
                   {    
                   $message .="".$additionalinfo[0]['sShortName']." (" . $array[0]["WorkOrderNum"] . ") <BR>".$additionalinfo[0]['sAddressNum']." ".$additionalinfo[0]['sAddressLine1'].", ".$additionalinfo[0]['sCityName']."<BR>".$additionalinfo[0]['sPhone1'] . " - ".$_SESSION['Latitude'].",".$_SESSION['Longitude']."<BR>";
                   $message .="". $additionalinfo[0]['JobDescription'] . " - ". $url . "";
                   $message .="Actual url =". $url . "";
                   $message .="Shortened url = $short_url"; 
                   }

                   $message .="";

                // Always set content-type when sending HTML email
                $headers = "MIME-Version: 1.0" . "\r\n";
                $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

               mail($to, $subject, $message, $headers);

            }

【问题讨论】:

    标签: php


    【解决方案1】:

    您似乎只是在另一个函数中使用了该命令,而无法访问该函数,因为它位于另一个文件中。

    只需将邮件函数上面的完整函数复制到同一个文件中即可。

    但是您也许应该将所有单独的松散函数收集在一个大文件中,并将其包含在所有页面中,以便在您需要任何东西时获得访问权限。

    例如函数.php

    然后在您的页面中包含此文件。

    include "PATH/TO/FILE/functions.php";
    

    【讨论】:

    • 我做了...我更新了第二个代码块...这是我为合并两个文件所做的事情,这给了我一个问题。
    【解决方案2】:

    函数 email() 是名为 Communications 的更大类的一部分。我将函数 shortURL() 放置在该类之外的文件顶部的正上方,它运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      相关资源
      最近更新 更多