首页 > 后端开发 > 正文

php 命名空间函数和类中不能使用use吗

2025-01-15 18:15:07 | 我爱编程网

php 命名空间函数和类中不能使用use吗相关内容,小编在这里做了整理,希望能对大家有所帮助,关于php 命名空间函数和类中不能使用use吗信息,一起来了解一下吧!

本文目录一览:

php 命名空间函数和类中不能使用use吗

Thinkphp 空操作.空控制器.命名空间详解

1、空操作
空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
网址/index.php/Home/Main/login
网址/index.php/Home/Main/hello 空操作
出现页面:



显示的错误信息过于详细,为安全以及优化页面起见,实行空操作


1、做一个_empty()方法。要在子类里面写,不要再父类里(推荐使用)
function _empty()
{
echo "网页不存在,请检查浏览器地址信息!";
}



2.造一个该方法对应的模版


在view/main下面新建一个text.html文件
别乱访问



注意:空操作方法仅在你的控制器类继承系统的Think\Controller类才有效,否则需要自己定义 __call 来实现。


2、空控制器
空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController),利用这个机制我们可以用来定制错误页面和进行URL的优化。
Home/Controller/EmptyController.class.php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
public function _empty()
{
echo "访问的页面不存在!";
}
}



3、跨控制器调用 我爱编程网


一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法。
跨控制器调用可以节省我们代码的工作量
3.1 同一模块下:
例如:在Home/Controller中有两个控制器:IndexController.class.php和MainController.class.php



在IndexController.class.php有一个方法:


public function ShuChu()
{
return "教务管理系统!";
}
现在想要在 MainController.class.php中也调用ShuChu()方法
function DiaoYong()
{
//方法一:造对象
//$index=new IndexController();
//echo $index-ShuChu();
//造对象有快捷函数供我们使用:
//A(“[模块/]控制器标志”) 实例化控制器对象
//方法二:使用A()方法
//$index=A("Index");
//echo $index-ShuChu();
//R([模块/]控制器标志/操作方法) 实例化对象同时调用指定方法
//方法三:使用R()方法,造对象并且调用某个特定的方法
echo R("Index/ShuChu");
}
运行结果:



3.2 不同模块下:


新添加一个模块Admin



TextController.class.php:


namespace Admin\Controller;
use Think\Controller;
class TextController extends Controller
{
public function Text()
{
echo "HHHHH";
}
}
现在想要在Home/Controller/ MainController.class.php中也调用Text()方法
function Text()
{
//跨模块调用
//方法一:使用A()方法
//$tt=A("Admin/Text");
//echo $tt-Text();
//方法二:使用R()方法,造对象并且调用某个特定的方法
echo R("Admin/Text/Text");
}
运行结果:



4.命名空间namespace


相当于一个虚拟的目录
正常管理文件使用文件夹--物理区分
TP框架的初始命名空间是:ThinkPHP\Library
在TP框架下命名空间里面使用代表的是初始命名空间(ThinkPHP\Library)
1.系统目录下根命名空间是ThinkPHP\Library下面的文件夹名称命名的
2.模块的根命名空间是以模块名命名的
在定义命名空间的时候需要从根写起例如:Home\Controller 例如:Think\Model
如果要使用某个类文件,引入该类命名空间的时候:
使用use关键字,后面写该类的命名空间 后面加上 "\文件名"
如果不想引入命名空间:在造类的对象的时候可以使用(初始命名空间)来找到对应的类
例如:new \Think\Page(30);

php 命名空间函数和类中不能使用use吗

php 命名空间函数和类中不能使用use吗

public 表示全局,类内部外部子类都可以访问;

private表示私有的,只有本类内部可以使用;

protected表示受保护的,只有本类或子类或父类中可以访问;
当实例化对象时,在外部只能使用其公共方法。不能使用protected和private方法。
而protected方法当子类继承时,可以调用父类的protected方法。或者在本类中使用,

PHP 的use 命名空间 是什么意思

我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP 的use 命名空间 是什么意思的相关内容。

有点类似于 java 中的包机制,用来解决重名问题的,每一个命名空间都是独立的

给你举个例子吧,比如我现在想写两个类,名字都叫 Action

<?php

namespace A;    // 定义命名空间

class Action {
    //..
}


namespace B;    // 定义第二个命名空间

class Action {
    //..
}

use 关键字用于导入某个命名空间下的类, 如果我在B空间内想使用A空间中的Action类,就需要导入这个类才能使用(当然也可以指明空间前缀来使用)

namespace B;

// 在本空间中需要使用A空间中的Action类,使用use导入

use A\Action;    // 导入,如果本空间中也有一个Action会出现错误,因为类重名了
use A\Action as A_Action;   // 通过取别名的方式解决

$var = new A_Action;

以上就是php 命名空间函数和类中不能使用use吗全部内容了,了解更多相关信息,关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php 命名空间函数和类中不能使用use吗”相关推荐
PHP中不同文件夹使用相同的命名空间,相互之间应该如何调用呢?能不能举例说明一下。
PHP中不同文件夹使用相同的命名空间,相互之间应该如何调用呢?能不能举例说明一下。

Thinkphp空操作.空控制器.命名空间详解1、空操作空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。网址/index.php/Home/Main/login网址/index.php/Home/Main/hello空操作出现页面:显示的错误信息过于详细,为安全以及优化页面起见

2024-12-06 18:14:52
php echo()和print()、require()和include()函数区别说明(Thinkphp 空操作.空控制器.命名空间详解)
php echo()和print()、require()和include()函数区别说明(Thinkphp 空操作.空控制器.命名空间详解)

phpecho()和print()、require()和include()函数区别说明1.echo和print的区别PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。$r=print“Hell

2024-09-04 21:18:56
php匿名函数中的use有什么用
php匿名函数中的use有什么用

php匿名函数中的use有什么用php文档中关于use的说明所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6开始允许导入函数或常量或者为它们设置别名。在PHP中,别名是通过操作符 use 来实现的.  下面是一个使用所有可能的五种导入方式的例子:Example #1 使用use操作符导入/使用别名&lt;?ph

2025-01-01 09:06:45
php 匿名函数 use 怎么用
php 匿名函数 use 怎么用

php匿名函数use怎么用这里的use实际上就是将全局的$message拷贝到局部函数中,所以很类似于global,不过和global不同的是:use时:当你在函数中对$message更改的时候不会影响到全局的那个$message,也就是说使用use实际上是拷贝一份变量到函数中。global时:正相反,在函数中对$message更改的时候会影响到全局的那个$message。我在后

2025-01-02 20:23:09
使用PHP调用Docker 命令 为什么不能成功
使用PHP调用Docker 命令 为什么不能成功

使用PHP调用Docker命令为什么不能成功应该是php权限不足导致的,可以把system执行后返回的状态码打出来看一下,想看到具体的返回结果可以用exec命令.你看过后很简单吧以后不会可以向我一样经常到后盾人平台找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢罒㉨罒docker会影响系统的php环境么如果对PHP环境配置不了解的话,建议你使用PHPWAMP绿色集成环境,PHP

2025-02-27 23:33:29
php 同一个程序中不同脚本里能用相同的变量名吗
php 同一个程序中不同脚本里能用相同的变量名吗

php同一个程序中不同脚本里能用相同的变量名吗可以,但是你要确保这两个变量不会同时出现,比如在A文件中定义了$aa,在文件中也定义了$aa,同时A包含了B文件,这样就会出问题。不过如果变量有域的话就不会引起冲突了。比如某个函数里定义了$aa,同时函数外面也有$aa,但是他们不会冲突。php怎么去除重复的值在PHP中去除重复值的函数为array_unique()。此函数会从数组中移除

2025-01-12 18:11:37
php 中aotoload函数,不用new也能自动加载吗
php 中aotoload函数,不用new也能自动加载吗

PHP直接调用函数和调用另外一个文件中的函数的区别//如果是PHP文件中的函数,唯一的区别是:先引入外部文件,然后直接调用。//如果是外部类文件中的函数,需要引入,然后new 对象后,再调用该对象的函数。$msg=test_msg();function test_msg(){echo "";}//调用外部文件中的函数//首先引入文件include_once 'file.php';$msg=t

2025-01-01 19:39:06
php的header()前面为什么不能有输出和空格
php的header()前面为什么不能有输出和空格

PHP语言:header()函数header("Expires:Mon,26Jul199705:00:00GMT");header("Last-Modified:".gmdate("D,dMYH:i:s")."GMT");header("Cache-Control:no-cache,must-revalidate");header("Pragma:no-cache");上面组

2024-12-07 18:51:02