首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php类中设置公共变量

在php类中设置公共变量
EN

Stack Overflow用户
提问于 2015-08-19 13:53:33
回答 3查看 195关注 0票数 0

下面的php类是我编写的,它运行得很好。但是,我希望代码表示能够更专业。

它在做什么?

  • 在代码的末尾,FULL_SEO_URL('xxxx')触发函数FULL_SEO_URL来操作一个类;
  • 在类内,第二种方法检查自己的循环,对某些处理采用第一种方法;
  • 第二种方法完成后,产品将通过第三种方法。

我想问什么?

  • 我如何在类中全局化一个变量,但在方法之外呢?(例如$all_seo_url_array),实际上变量在所有方法中都是可用的;
  • 如何在类中设置$k=0的初始值?实际上,我还想将每个FULL_SEO_URL('xxxx')的用法重置为0;

谢谢。

代码语言:javascript
复制
<?php
$k = 0; //I don't like to set $k=0 here, but it is the only way to work
class CONVERT{  
    public static function parent_id_to_seo_url($page_id){
        $sql_parent_id_to_seo_url   = "select * from ".DB_PREFIX."page 
                                    left join ".DB_PREFIX."page_contents 
                                    on ".DB_PREFIX."page.page_id = ".DB_PREFIX."page_contents.page_id
                                    where ".DB_PREFIX."page.page_id = '".$page_id."'
                                    and ".DB_PREFIX."page_contents.language = '".$_SESSION['frontend']['lang']."'";
        $result_parent_id_to_seo_url = mysql_query($sql_parent_id_to_seo_url);
        $record_parent_id_to_seo_url = mysql_fetch_assoc($result_parent_id_to_seo_url);
        return $record_parent_id_to_seo_url['seo_url'];
    }

    public static function all_seo_url($single_seo_url){
        global $all_seo_url_array;    //can I global it outside the methods?
        global $k;    //can I global it outside the methods?

        $sql_all_seo_url        =   "select * from ".DB_PREFIX."page 
                                    left join ".DB_PREFIX."page_contents 
                                    on ".DB_PREFIX."page.page_id = ".DB_PREFIX."page_contents.page_id
                                    where ".DB_PREFIX."page_contents.seo_url = '".$single_seo_url."'
                                    and ".DB_PREFIX."page_contents.language = '".$_SESSION['frontend']['lang']."'";
        $result_all_seo_url     = mysql_query($sql_all_seo_url);
        $record_all_seo_url = mysql_fetch_assoc($result_all_seo_url);

        $all_seo_url_array[$k]['seo_url'] = $record_all_seo_url['seo_url'];

        $k++;

        if ($record_all_seo_url['level']>1){CONVERT::all_seo_url(CONVERT::parent_id_to_seo_url($record_all_seo_url['parent_id']));} else { $k = 0; }  //can I reset $k=0 at better place?

        return $all_seo_url_array;
    }

    public static function reverse_seo_url($all_seo_url_array){
        global $all_seo_url_array_reverse;   //can I global it outside the methods?

        $all_seo_url_array_reverse = array_reverse($all_seo_url_array);

        $final_url = '';
        foreach ($all_seo_url_array_reverse as $key => $value){
            $final_url  .= '/'.$all_seo_url_array_reverse[$key]['seo_url'];
        }   
        return $final_url;
    }

}

function FULL_SEO_URL($seo_url){
    return CONVERT::reverse_seo_url(CONVERT::all_seo_url($seo_url));
}

echo FULL_SEO_URL('history'); echo "<br/>";
echo FULL_SEO_URL('other-innovations'); echo "<br/>";
?>
EN

回答 3

Stack Overflow用户

发布于 2015-08-19 14:03:54

可以在以下类中设置静态属性:

代码语言:javascript
复制
class myClass{
    public static $myProperty = 0;

    public static function myFunction(){
        echo self::$myProperty;
        self::$myProperty = 1;
        echo self::$myProperty;
    }

echo myClass::$myProperty;
# output: 0
myClass::myFunction();
# output 0 1
echo myClass::$myProperty;
# output 1
myClass::$myProperty=0;
echo myClass::$myProperty;
# output 0
票数 0
EN

Stack Overflow用户

发布于 2015-08-19 14:06:11

我不知道你所说的关于$k的全球化是什么意思;

代码语言:javascript
复制
<?php

class CONVERT
{
    protected $k;

    function __construct()
    {
        $this->k = 0;
    }
}

有了这个,您可以在所有方法中使用$this->k

票数 0
EN

Stack Overflow用户

发布于 2015-08-19 14:07:02

可以使用构造函数访问跨类的变量。

例如。

代码语言:javascript
复制
class testclass
{
    private $global_variable;

    public function __construct($global_variable)
    {
       $this->global_variable = $global_variable;
    }

    public function yourmethod()
    {
       $this->global_variable; // And so on
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32097556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档