1. 如何在php类中执行某方法的时候自动执行另一个方法比如我执行数据插入的时候自动运行数据过滤的方法
PHP没有事件机制。有一些模拟事件的方法,但我觉得代码太繁琐了,不实用。这里我向你推荐PHP的魔术方法。
魔术方法会在调用一个不存在或是非公有的方法之前,自动根据某种规则调用另外一个方法。比如下面的类就是了这样:在调用insert方法时,判断类中是否有before_insert方法。如果有则先调用before_insert方法,并检查它的返回值,决定是否继续调用insert。如果before_insert是一个过滤函数,如果验证失败就会返回false,insert插入就不会进行了。
如果不明白可以阅读PHP手册中介绍魔术方法的部分。
<?php
classMyClass{
//如果使用类的实例调用$method,但$method方法不是公有的,就会触发此函数。
publicfunction__call($method,$args){
//检查是否存在方法$method
if(method_exists($this,$method)){
$before_method='before_'+$method;
//检查是否存在方法$before_method
if(method_exists($this,$before_method)){
//调用$before_method,检查其返回值,决定是否跳过函数执行
if(call_user_func_array(array($this,$before_method),$args)){
retruncall_user_func_array(array($this,$method),$args)
}
}else{
//$before_method不存在,直接执行函数
retruncall_user_func_array(array($this,$method),$args)
}
}else{
thrownewException('nosuchmethod'.$method);
}
}
//注意这里不要写成public
privatefunctioninsert(){}
//低调!不要写出公有的
privatefunctionbefore_insert(){}
}
$myobj=MyClass;
$myobj->insert('mytable',array('name'=>'2012'));
2. php类中怎么调用类自己的方法
$this->method();
3. php如何通过url调用php文件中的方法
题主所描述的这种形式,是MVC设计模式的典型应用。
通过使用PSR4来实现自动加载,可以通过处理路由来实现
//处理路由的方法
staticpublicfunctionroute()
{
//获取的模块
$_GET['m']=isset($_GET['m'])?$_GET['m']:'Index';
//获取行为动作action又叫方法
$_GET['a']=isset($_GET['a'])?$_GET['a']:'index';
$controller='Controller\'.$_GET['m'].'Controller';
//echo$controller;
$c=new$controller();
//$c->$_GET['a']();
call_user_func(array($c,$_GET['a']));
}
最终可实现以下形式:
4. PHP怎么调用其他类的方法
在Java的调用方法是import,而在PHP中没有import这个函数,一般PHP中调用其他类是用到require(),具体PHP调用其他类的方法如下:
1、首先应该先有一个文件名为tool.php的文件,在文件中声明一个类。
(4)php自动调用方法扩展阅读:
类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:
<?php
class Cart { var $items; // 购物车中的物品
// 将 $num 个 $artnr 物品加入购物车
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
} // 将 $num 个 $artnr 物品从购物车中取出
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num; return true;
} elseif
($this->items[$artnr] == $num) {
unset($this->items[$artnr]); return true;
} else {
return false; }
}
} ?>
上面的例子定义了一个 Cart 类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。
5. thinkphp3.2.3如何每30分钟自动执行controller下的方法,这个是主动的,不需要访问,本人操作系统是win10
linux系统用crontab 定时每30分钟执行一次php脚本
windows系统用计划任务 定时每30分钟执行一次php 脚本
下面是wind7的截图,window10你自己查下
6. php调用自定义函数
PHP代码call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
function
a($b,$c)
{
echo
$b;
echo
$c;
}
call_user_func('a',
"111","222");
call_user_func('a',
"333","444");
//显示
111
222
333
444
?>
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
class
a
{
function
b($c)
{
echo
$c;
}
}
call_user_func(array("a",
"b"),"111");
//显示
111
?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
function
a($b,
$c)
{
echo
$b;
echo
$c;
}
call_user_func_array('a',
array("111",
"222"));
//显示
111
222
?>
call_user_func_array函数也可以调用类内部的方法的
Class
ClassA
{
function
bc($b,
$c)
{
$bc
=
$b
+
$c;
echo
$bc;
}
}
call_user_func_array(array('ClassA','bc'),
array("111",
"222"));
//显示
333
?>
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
function
a($b)
{
$b++;
}
$c
=
0;
call_user_func('a',
$c);
echo
$c;//显示
1
call_user_func_array('a',
array($c));
echo
$c;//显示
2
另:call_user_func函数和call_user_func_array函数都支持引用。
?phpfunction
increment(&$var){
$var++;}$a
=
0;call_user_func('increment',
$a);echo
$a;
//
0call_user_func_array('increment',
array(&$a));
//
You
can
use
this
insteadecho
$a;
//
1?
7. php 中自动填充函数怎么调用
如果需要使用一个类,只需要直接使用include/require将其包含进来即可。
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
//定义一个类ClassA,文件名为ClassA.php
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:
function __autoload($classname){
$classpath=”./”.$classname.'.php';
if(file_exists($classpath)){
require_once($classpath);
}
else{
echo ‘class file'.$classpath.'not found!';
}
}
$newobj = new ClassA();
$newobj = new ClassB();
8. PHP 方法调用
每看懂你问的是什么意思,方法都是被调用的,返回执行的结果,你把拼接sql那段代码放到方法里,return $res,其他方法里再调用这个拼接sql的方法就能获取到
9. php方法调用
<?php
//该例子是让大家知道,在php中如何定义一个方法,以及如何调用方法
//下面定义一个方法,这个方法很简单,就是处理2个数的相加问题
functionadd($number1,$number2){
$sum=$number1+$number2;
echo$sum;
}
//我们来调用add()方法
add(1,2);
/**
说明:
function这个关键字就是声明方法的。在这个关键字后面的add就是方法的名称,括号中的是参数。
也可以没有参数的。大括号内是方法体。里面是该方法的逻辑。
下面的add(1,2)就是调用add这个方法。如果没有调用方法将不会被执行的。
*/
//定义一个带有返回值的方法
functionre($n1,$n2){
$sum=$n1+$n2;
return$sum;
}
//调用有返回值的方法,调用这个方法,值是5。
echore(2,3);
?>
10. 在线等PHP自动函数__autoload什么时候自动调用啊
__autoload是一个魔术函数。
意思是你只需要定义魔术函数。然后就不必要每次include一大推类文件。实例化的时候,会自动引入。
比如你又A.class.php B.class.php 两个类
然后你只需要
//定义一个函数
function__autoload($className){
if(!class_exists($className)){
include_once$className.".class.php";
}
}
在本页面是就直接实例化一个a类了。$a=newA();