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();