English 中文(简体)
PHP在两个班级之间的范围
原标题:PHP scope between two classes

我有以下几个档案:

指数:

require_once("foo.php");
require_once("bar.php");

foo.php:

class foo {

   function1() {

   }

}

Bar.php:

class bar {

   ?????

}

我的问题是,是否在酒类中利用oo类的功能,而不必包括oo。 php file in the bar. php文档,因为它已经装上指数。

预 收

问题回答

在把档案列入公共卫生和社会福利部时,你不把任何内容列入的现行档案<>,而是列入目前执行<><><>。

档案一旦列入,其内容即为已知<>m>,由公共卫生和社会福利部翻译,并将保留已知,直至本稿执行结束。

缩略语如拷贝-pasting:有现成的index.php文档,如您从foo.phpbar.php 和复制到index.php


So, yes, once foo.php has been loaded once, you can access what s defined by it from bar.php -- even if those two are included by index.php.

(您通过access意味着什么是模糊的,尽管:你不得不宣布某些方法为静止的,或使>foo<>/code> 。 ...... 但是,根据在<条码>/条令/代码>上宣布的方法,从体内所有可能的方法。


As a sidenote : you should be careful with your file inclusions : if you include twice a file that declares a class, for example, you ll get a fatal error, because it s forbidden to define two classes with the same name.

删除我先前写过的复印件的想法? 翻一番,甚至从两个不同的档案中抽出一只文件,就像复制件——两倍......

为避免这一问题,我们经常使用<><>include_once,正如其名称所示,这确保只列入某一档案一次。

如果foo.php已经装上,那么要求询问的真正问题是,“Am Iaccessing , 1 ()以静态或偶然的方式?”

如果<代码>功能1()是固定功能(例如,不是):

class bar{

  function function2(){
    return foo::function1();
  }
}

否则,您将不得不立即进行<代码>foo的试验,使之成为地方或阶层范围的变化,例如。

class bar{

  /*
   * @var foo
   */
  private $foo;

  function __construct(){
    $this->foo = new foo();
  }

  function function2(){
    return $this->foo->function1();
  }

}

阅读: http://php.net/manual/en/English.oop5.static.php

顺便提一下,正如帕斯卡尔·马斯特林特所解释的,你不需要再做另一个<条码>include(),但通常需要大量应用,你将选择

你们应努力从人工纳入档案,而是努力找到一种解决办法,使你能够使用自动载荷。

自动卸载将使你能够处理酶负荷问题,或者只装载你在每项请求中所需要的文件,而不是建立一个列入档案的星座网络。

您可以通过__autoload 或spl_autoload来做到这一点,在以下主题上读得更多:。 http://php.net/manual/en/English.oop5.autoload.php

下述小型自动载荷例子:

function __autoload($class_name) {
    require_once $class_name .  .php ;
}

$obj  = new MyClass1();
$obj2 = new MyClass2(); 

如果找不到某类人员,则使用自动卸载的php就能够自动地试图装上档案,例如,没有理由将MyClass1或MyClass2的类别档案列入其中,如果找不到定义,则它就可重新进入第__aloaduto功能。

采用这一方法,意味着你必须把oo或酒吧列入你的例子,也不要将其列入索引。 php

你可以静态地这样做,尽管存在一些限制,这是一种令人憎恶的做法,因为这一功能实际上没有固定。

foo::function1();

更好的办法是使班子把oo作为参数。 根据使用情况,可以在施工人或特定方法中做到这一点。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...