php的$nbsp是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php的$nbsp是啥相关的知识,希望对你有一定的参考价值。

$nbsp 这是一个变量

php 变量规则:
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
注释:PHP 变量名称对大小写敏感!
参考技术A 【 】表示的是一个空格,【echo ‘ ’】,表示打印一个空格。

【$nbsp】,应该是变量吧。内容是什么,你用【var_dump()】函数一看就知道了。追问

echo " "和echo  有区别么

追答

我写的不是【echo ‘ ’】,是【echo ‘&nb-sp; ’】(没有 - ,但是不加这个就直接显示空格了。)

echo " "和echo 都是一样的,只是双引号里面的【&nb-sp】(没有 - )被直接显示成空格了,你没看到而已。

本回答被提问者和网友采纳
参考技术B 是一个变量 ,在html中, & nbsp; 才是空格 参考技术C $nbsp在php里是变量, 在html里是空格 参考技术D 这起到一个空格作用

PHP中的抽象类是啥?

【中文标题】PHP中的抽象类是啥?【英文标题】:What is an abstract class in PHP?PHP中的抽象类是什么? 【发布时间】:2011-02-03 06:04:19 【问题描述】:

什么是 PHP 中的抽象类?

如何使用?

【问题讨论】:

(参考) de2.php.net/manual/en/language.oop5.abstract.php (相关) ***.com/questions/2288467/… @Gordon:有时官方文档对某些人来说不是那么清楚:( (重复) ***.com/questions/1852093/abstract-keyword-in-php @Sarfraz 这并不意味着 RTFM 方式。我只是认为拥有官方文档的链接是一种有用的资产。而且你不会相信有多少人不阅读官方文档,甚至不知道它们的存在。 【参考方案1】:

抽象类是一个至少包含一个抽象方法的类,它是一个没有任何实际代码的方法,只有名称和参数,并且被标记为“抽象”。

这样做的目的是提供一种模板来继承并强制继承类实现抽象方法。

因此,抽象类介于普通类和纯接口之间。接口也是抽象类的一个特例,其中所有方法都是抽象的。

请参阅 PHP 手册的this section 以获取更多参考。

【讨论】:

在this thread中,摘要不包含任何抽象方法。 @r0ng 更正确的说法是抽象类可能包含抽象方法,而抽象方法必须始终位于抽象类内部。我心目中定义的实用特性是抽象类不能实例化,但可以继承和覆盖方法,抽象类的静态方法可以正常使用。【参考方案2】:

抽象类是包含一个或多个抽象方法的类。抽象方法是一种已声明但不包含实现的方法。抽象类可能不会被实例化,并且需要子类来提供抽象方法的实现。

1.无法实例化抽象类:定义为抽象的类可能无法实例化,任何包含至少一个抽象方法的类也必须是抽象的。

下面的例子:

abstract class AbstractClass


    abstract protected function getValue();
    abstract protected function prefixValue($prefix);


    public function printOut() 
        echo "Hello how are you?";
    


$obj=new AbstractClass();
$obj->printOut();
//Fatal error: Cannot instantiate abstract class AbstractClass

2。任何包含至少一个抽象方法的类也必须是抽象的:抽象类可以有抽象和非抽象方法,但它必须至少包含一个抽象方法。如果一个类至少有一个抽象方法,那么这个类必须被声明为抽象的。

注意:Traits 支持使用抽象方法,以便对展示类施加要求。

下面的例子:

class Non_Abstract_Class

   abstract protected function getValue();

    public function printOut() 
        echo "Hello how are you?";
    


$obj=new Non_Abstract_Class();
$obj->printOut();
//Fatal error: Class Non_Abstract_Class contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Non_Abstract_Class::getValue)

3.抽象方法不能包含主体:定义为抽象的方法只是声明方法的签名 - 它们不能定义实现。但是一个非抽象的方法可以定义实现。

abstract class AbstractClass

   abstract protected function getValue()
   return "Hello how are you?";
   

    public function printOut() 
        echo $this->getValue() . "\n";
    


class ConcreteClass1 extends AbstractClass

    protected function getValue() 
        return "ConcreteClass1";
    

    public function prefixValue($prefix) 
        return "$prefixConcreteClass1";
    


$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."\n";
//Fatal error: Abstract function AbstractClass::getValue() cannot contain body

4.从抽象类继承时,父类声明中标记为抽象的所有方法都必须由子类定义:如果继承抽象类,则必须为其中的所有抽象方法提供实现。

abstract class AbstractClass

    // Force Extending class to define this method
    abstract protected function getValue();

    // Common method
    public function printOut() 
        print $this->getValue() . "<br/>";
    


class ConcreteClass1 extends AbstractClass

    public function printOut() 
        echo "dhairya";
    


$class1 = new ConcreteClass1;
$class1->printOut();
//Fatal error: Class ConcreteClass1 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (AbstractClass::getValue)

5.相同(或限制较少)可见性:从抽象类继承时,所有在父类声明中标记为抽象的方法都必须由子类定义;此外,这些方法必须定义为具有相同(或较少限制)的可见性。例如,如果抽象方法定义为受保护,则函数实现必须定义为受保护或公共,但不能定义为私有。

注意抽象方法不应该是私有的。

abstract class AbstractClass


    abstract public function getValue();
    abstract protected function prefixValue($prefix);

        public function printOut() 
        print $this->getValue();
    


class ConcreteClass1 extends AbstractClass

    protected function getValue() 
        return "ConcreteClass1";
    

    public function prefixValue($prefix) 
        return "$prefixConcreteClass1";
    

$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."<br/>";
//Fatal error: Access level to ConcreteClass1::getValue() must be public (as in class AbstractClass)

6.抽象方法的签名必须匹配:从抽象类继承时,父类声明中所有标记为abstract的方法必须由子定义;方法的签名必须匹配,即类型提示和编号所需参数的个数必须相同。例如,如果子类定义了一个可选参数,而抽象方法的签名没有,则签名中没有冲突。

abstract class AbstractClass


    abstract protected function prefixName($name);



class ConcreteClass extends AbstractClass



    public function prefixName($name, $separator = ".") 
        if ($name == "Pacman") 
            $prefix = "Mr";
         elseif ($name == "Pacwoman") 
            $prefix = "Mrs";
         else 
            $prefix = "";
        
        return "$prefix$separator $name";
    


$class = new ConcreteClass;
echo $class->prefixName("Pacman"), "<br/>";
echo $class->prefixName("Pacwoman"), "<br/>";
//output: Mr. Pacman
//        Mrs. Pacwoman

7.抽象类不支持多重继承:抽象类可以扩展另一个抽象类,抽象类可以提供接口的实现,但不支持多重继承。

interface MyInterface
    public function foo();
    public function bar();


abstract class MyAbstract1
    abstract public function baz();



abstract class MyAbstract2 extends MyAbstract1 implements MyInterface
    public function foo() echo "foo"; 
    public function bar() echo "bar"; 
    public function baz() echo "baz"; 


class MyClass extends MyAbstract2


$obj=new MyClass;
$obj->foo();
$obj->bar();
$obj->baz();
//output: foobarbaz

注意:请注意代码中类的顺序或位置可能会影响解释器,并可能导致致命错误。 因此,在使用多层次抽象时,请注意源代码中类的定位。

下面的例子会导致致命错误:找不到类'horse'

class cart extends horse 
    public function get_breed()  return "Wood"; 


abstract class horse extends animal 
    public function get_breed()  return "Jersey"; 


abstract class animal 
    public abstract function get_breed();


$cart = new cart();
print($cart->get_breed());

【讨论】:

【参考方案3】:

抽象类是一个类 仅部分实施 程序员。它可能包含一个或多个 抽象方法。抽象方法 只是一个函数定义 用于告诉程序员 方法必须在孩子中实现 类。

对此有很好的解释here

【讨论】:

您好,感谢您的解释,事实上,对于 PHP 中的抽象和接口,互联网上并没有这样好的解释。【参考方案4】:

抽象类 1. 包含一个抽象方法 2.不能直接初始化 3. 无法创建抽象类的对象 4. 仅用于继承目的

抽象方法 1. 不能包含正文 2. 不能定义为私有 3.子类必须定义抽象类中声明的方法

示例代码:

abstract class A 
    public function test1() 
        echo 'Hello World';
    
    abstract protected function f1();
    abstract public function f2();
    protected function test2()
        echo 'Hello World test';
    


class B extends A 
    public $a = 'India';
    public function f1() 
        echo "F1 Method Call";
    
    public function f2() 
        echo "F2 Method Call";
    


$b = new B();
echo $b->test1() . "<br/>";
echo $b->a . "<br/>";
echo $b->test2() . "<br/>";
echo $b->f1() . "<br/>";
echo $b->f2() . "<br/>";

输出:

Hello World
India
Hello World test
F1 Method Call
F2 Method Call

【讨论】:

子类对象不能调用父类protected方法,可以通过这个对象调用子类方法 echo $b->test2() 。 "";【参考方案5】: 抽象类只包含声明方法的签名,不能定义实现。 抽象类是使用关键字abstract定义的。 抽象类无法实现多重继承。 最新版本的 PHP 5 引入了抽象类和方法。 类定义为抽象,我们无法创建对象(可能未实例化)

【讨论】:

【参考方案6】:

抽象类和普通类一样,它包含变量,它包含受保护的变量,函数,它包含构造函数,只有一件事不同,它包含抽象方法。

抽象方法是指没有定义的空方法,所以抽象类只有一个区别,我们不能创建抽象类的对象

Abstract 必须包含抽象方法,并且这些方法必须在其继承类中定义。

【讨论】:

以上是关于php的$nbsp是啥的主要内容,如果未能解决你的问题,请参考以下文章

在php代码中 empty 是啥意思

php中的global关键字是啥意思

php ::是啥意思

php是啥意思

PHP里模拟Post提交是啥意思?

在laravel框架中 使用artisan 命令 没有反应 也不报错 是啥原因 是我配置的原因吗?