Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问PHP中函数创建的对象实例_Php_Oop_Function - Fatal编程技术网

访问PHP中函数创建的对象实例

访问PHP中函数创建的对象实例,php,oop,function,Php,Oop,Function,我刚开始接触OOP PHP,但有点卡住了 基本上我想创建一个函数来创建对象,问题是我无法访问函数之外的对象: $website0 = new website(0,'test','NameTest'); echo $website0 ->getProperty('name'); 这很有效。然而: createWebsitesFromDatabase(); echo $website0 ->getProperty('name'); function createWebsitesFro

我刚开始接触OOP PHP,但有点卡住了

基本上我想创建一个函数来创建对象,问题是我无法访问函数之外的对象:

$website0 = new website(0,'test','NameTest');
echo $website0 ->getProperty('name');
这很有效。然而:

createWebsitesFromDatabase();
echo $website0 ->getProperty('name');

function createWebsitesFromDatabase() {
    $website0 = new website (0,'test','NameTest');
}
不起作用。有什么想法吗?

这样做:

function createWebsitesFromDatabase() {
   global $website0; // here is the trick
   $website0 = new website (0,'test','NameTest');
}

createWebsitesFromDatabase();    
echo $website0 ->getProperty('name');
function createWebsitesFromDatabase() {
global $website0;
$website0 = new website (0,'test','NameTest');
}
这个链接应该可以澄清你的问题


您必须使用返回值将创建的对象分配给函数外部的变量,这比在大多数情况下使用全局变量要好

<?php
   function createWebsitesFromDatabase(){
       $insideVar = new website(0, 'test', 'NameTest');
       return $insideVar;
   }

   $website0 = createWebsitesFromDatabase();
   echo $website0->getProperty('name');
?>


这比使用
global
要好得多。不过,请注意,名称是createWebSitesFromDatabase。如果名称准确,您可能希望返回一组网站。这一点很好,但整个代码只是一个很短的摘录,很难告诉您计划中的功能为什么比使用global更好?计划是从数据库中读取数据并从每个条目中创建对象-最后,我希望类本身中有一个静态函数来生成这些数据,以使其保持自包含状态,就像Nicolas Brown一样,我想指出的是,通过使用全局变量,如果使变量在作用域中可用,则可能不需要变量。如果你想保持它的独立性,global与你想做的恰恰相反。正如cHao所说,您可能希望返回一个数组,而不是使用$website0、$website1等。