首页 > 后端开发 > 正文

函数+php PHP调用了一个错误的函数?

2024-08-27 21:17:41 | 我爱编程网

今天我爱编程网小编整理了函数+php PHP调用了一个错误的函数?相关信息,希望在这方面能够更好的大家。

本文目录一览:

函数+php PHP调用了一个错误的函数?

php引用函数的使用方法

在技术学习的道路上,能掌握一些有用的技巧,对于初学者是非常有帮助的,下面是php引用函数的使用方法,希望大家会喜欢。

1.不要在你的应用程序中gzip输出,让apache来做

考虑使用ob_gzhandler?不,别这样做。它没有任何意义。PHP应该是来写应用程序的。不要担心PHP中有关如何优化在服务器和浏览器之间传输的数据。

使用apache mod_gzip/mod_deflate通过.htaccess文件压缩内容。

2.从php echo javascript代码时使用json_encode

有些时候一些JavaScript代码是从php动态生成的。

$images = array( 'myself.png' , 'friends.png' , 'colleagues.png');

$js_code = '';foreach($images as $image)

{

$js_code .= "'$image' ,";

}

$js_code = 'var images = [' . $js_code . ']; ';echo $js_code;//Output is var images = ['myself.png' ,'friends.png' ,'colleagues.png' ,];

放聪明点。使用json_encode:

$images = array( 'myself.png' , 'friends.png' , 'colleagues.png');

$js_code = 'var images = ' . json_encode($images);

echo $js_code;//Output is : var images = ["myself.png","friends.png","colleagues.png"]

这不是很整洁?

3.在写入任何文件之前检查目录是否可写

在写入或保存任何文件之前,请务必要检查该目录是否是可写的,如果不可写的话,会闪烁错误消息。这将节省你大量的“调试”时间。当你工作于Linux时,权限是必须要处理的,并且会有很多很多的权限问题时,当目录不可写,文件无法读取等的时候。

请确保你的应用程序尽可能智能化,并在最短的时间内报告最重要的信息。

$contents = "All the content";

$file_path = "/var/www/project/content.txt";

file_put_contents($file_path , $contents);

这完全正确。但有一些间接的问题。file_put_contents可能会因为一些原因而失败:

父目录不存在

目录存在,但不可写

锁定文件用于写入?

因此,在写入文件之前最好能够一切都弄明确。

$contents = "All the content";

$dir = '/var/www/project';

$file_path = $dir . "/content.txt";if(is_writable($dir))

{

file_put_contents($file_path , $contents);

}else{    die("Directory $dir is not writable, or does not exist. Please check");

}

通过这样做,你就能得到哪里文件写入失败以及为什么失败的准确信息。

4.改变应用程序创建的文件的权限

当在Linux环境下工作时,权限处理会浪费你很多时间。因此,只要你的php应用程序创建了一些文件,那就应该修改它们的权限以确保它们在外面“平易近人”。否则,例如,文件是由“php”用户创建的,而你作为一个不同的用户,系统就不会让你访问或打开文件,然后你必须努力获得root权限,更改文件权限等等。

// Read and write for owner, read for everybody elsechmod("/somedir/somefile", 0644);// Everything for owner, read and execute for otherschmod("/somedir/somefile", 0755);

5.不要检查提交按钮值来检查表单提交

if($_POST['submit'] == 'Save')

{    //Save the things}

以上代码在大多数时候是正确的,除了应用程序使用多语言的情况。然后“Save”可以是很多不同的东西。那么你该如何再做比较?所以不能依靠提交按钮的值。相反,使用这个:

if( $_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['submit']) )

{    //Save the things}

现在你就可以摆脱提交按钮的值了。

6.在函数中总是有相同值的地方使用静态变量

//Delay for some timefunction delay(){

$sync_delay = get_option('sync_delay');    echo "

Delaying for $sync_delay seconds...";

sleep($sync_delay);    echo "Done

";

}

相反,使用静态变量:

//Delay for some timefunction delay(){    static $sync_delay = null;    if($sync_delay == null)

{

$sync_delay = get_option('sync_delay');

}    echo "

Delaying for $sync_delay seconds...";

sleep($sync_delay);    echo "Done

";

}

7.不要直接使用$ _SESSION变量

一些简单的例子是:

$_SESSION['username'] = $username;

$username = $_SESSION['username'];

但是这有一个问题。如果你正在相同域中运行多个应用程序,会话变量会发生冲突。2个不同的应用程序在会话变量中可能会设置相同的键名。举个例子,一个相同域的前端门户和后台管理应用程序。

因此,用包装函数使用应用程序特定键:

define('APP_ID' , 'abc_corp_ecommerce');//Function to get a session variablefunction session_get($key){

$k = APP_ID . '.' . $key;    if(isset($_SESSION[$k]))

{        return $_SESSION[$k];

}    return false;

}//Function set the session variablefunction session_set($key , $value){

$k = APP_ID . '.' . $key;

$_SESSION[$k] = $value;    return true;

}

8.封装实用辅助函数到一个类中

所以,你必须在一个文件中有很多实用函数:

function utility_a(){    //This function does a utility thing like string processing}function utility_b(){    //This function does nother utility thing like database processing}function utility_c(){    //This function is ...}

自由地在应用程序中使用函数。那么你或许想要将它们包装成一个类作为静态函数:

class Utility{    public static function utility_a()

{

}    public static function utility_b()

{

}    public static function utility_c()

{

}

}//and call them as $a = Utility::utility_a();

$b = Utility::utility_b();

这里你可以得到的一个明显好处是,如果php有相似名称的内置函数,那么名称不会发生冲突。

从另一个角度看,你可以在相同的应用程序中保持多个版本的相同类,而不会发生任何冲突。因为它被封装了,就是这样。

9.一些傻瓜式技巧

使用echo代替print

使用str_replace代替preg_replace,除非你确定需要它

不要使用short tags

对于简单的字符串使用单引号代替双引号

在header重定向之后要记得做一个exit

千万不要把函数调用放到for循环控制行中。

isset比strlen快

正确和一致地格式化你的'代码

不要丢失循环或if-else块的括号。

不要写这样的代码:

if($a == true) $a_count++;

这绝对是一种浪费。

这样写

if($a == true)

{

$a_count++;

}

不要通过吃掉语法缩短你的代码。而是要让你的逻辑更简短。使用具有代码高亮功能的文本编辑器。代码高亮有助于减少错误。

10. 使用array_map快速处理数组

比方说,你要trim一个数组的所有元素。新手会这样做:

foreach($arr as $c => $v)

{

$arr[$c] = trim($v);

}

但它可以使用array_map变得更整洁:

$arr = array_map('trim' , $arr);

这适用于trim数组$arr的所有元素。另一个类似的函数是array_walk。

11.使用php过滤器验证数据

你是不是使用正则表达式来验证如电子邮件,IP地址等值?是的,每个人都是这样做的。现在,让我们试试一个不同的东西,那就是过滤器。

php过滤器扩展程序将提供简单的方法来有效验证或校验值。

12.强制类型检查

$amount = intval( $_GET['amount'] );

$rate = (int) $_GET['rate'];

这是一种好习惯。

13.使用set_error_handler()将Php错误写入到文件

set_error_handler()可以用来设置自定义的错误处理程序。在文件中编写一些重要的错误用于日志是个好主意。

14.小心处理大型数组

大型的数组或字符串,如果一个变量保存了一些规模非常大的东西,那么要小心处理。常见错误是创建副本,然后耗尽内存,并得到内存溢出的致命错误:

$db_records_in_array_format; //This is a big array holding 1000 rows from a table each having 20 columns , every row is atleast 100 bytes , so total 1000 * 20 * 100 = 2MB$cc = $db_records_in_array_format; //2MB moresome_function($cc); //Another 2MB ?

当导入csv文件或导出表到csv文件时,上面这样的代码很常见。

像上面这样做可能经常会由于内存限制而让脚本崩溃。对于小规模的变量它不会出现问题,但当处理大型数组时一定要对此加以避免。 我爱编程网

考虑通过引用传递它们,或者将它们存储在一个类变量中:

$a = get_large_array();

pass_to_function(&$a);

这样一来,相同的变量(并非其副本)将用于该函数。

class A{    function first()

{        $this->a = get_large_array();        $this->pass_to_function();

}    function pass_to_function()

{        //process $this->a

}

}

尽快复原它们,这样内存就能被释放,并且脚本的其余部分就能放松。

下面是关于如何通过引用来赋值从而节省内存的一个简单示例。

<?phpini_set('display_errors' , true);

error_reporting(E_ALL);

$a = array();for($i = 0; $i < 100000 ; $i++)

{

$a[$i] = 'A'.$i;

}echo 'Memory usage in MB : '. memory_get_usage() / 1000000 . '

';

$b = $a;

$b[0] = 'B';echo 'Memory usage in MB after 1st copy : '. memory_get_usage() / 1000000 . '

';

$c = $a;

$c[0] = 'B';echo 'Memory usage in MB after 2st copy : '. memory_get_usage() / 1000000 . '

';

$d =& $a;

$d[0] = 'B';echo 'Memory usage in MB after 3st copy (reference) : '. memory_get_usage() / 1000000 . '

';

一个典型php 5.4机器上的输出是:

Memory usage in MB : 18.08208Memory usage in MB after 1st copy : 27.930944Memory usage in MB after 2st copy : 37.779808Memory usage in MB after 3st copy (reference) : 37.779864

因此可以看出,内存被保存在第3份通过引用的副本中。否则,在所有普通副本中内存将被越来越多地使用。

15.在整个脚本中使用单一的数据库连接

请确保你在整个脚本使用单一的数据库连接。从一开始就打开连接,使用至结束,并在结束时关闭它。不要像这样在函数内打开连接:

function add_to_cart(){

$db = new Database();

$db->query("INSERT INTO cart .....");

}function empty_cart(){

$db = new Database();

$db->query("DELETE FROM cart .....");

}

有多个连接也不好,会因为每个连接都需要时间来创建和使用更多的内存,而导致执行减缓。

在特殊情况下。例如数据库连接,可以使用单例模式。

函数+php PHP调用了一个错误的函数?

php中function函数的用法

在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。
在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,以下是function函数的常见用法。
1、声明函数
function functionName() { // 函数体}

函数+php PHP调用了一个错误的函数?

PHP调用了一个错误的函数?

我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP调用了一个错误的函数?的相关内容。

一、错误类型:PHP致命错误

Error type: PHP Fatal error

Fatal error: Call to undefined function (a) in (b) on line (c)

二、错误描述:

该错误报告表示你正企图调用未经定义的函数(function),其中

a----表示未定义的函数名;

b----出现该段脚本的路径;

c----企图调用未定义函数的行号。

d----第二次定义该函数时的行号。

三、原因及解决方法:

  1. 原因1:你的确没有声明过该函数。例如,直接调用下面的函数

    myFunction();// 这里根本就没有这个函数

    结果如下
    Fatal error:Call to undefinedfunction myFunction()in(path) on line 1

    解决:
    仔细检测你的程序中是否声明过该函数。

  2. 原因2:你在函数声明时用的名称和你在调用时用的名称不相同,例如

    function myFunction(){// do something}myFuntion();// 这里少写了一个字母C
    解决:这是很多初学者最容易犯的一个错误。有时候因为少写,或者多写,写错一个字母而导致很长时间都检查不出来。

  3. 原因3:你在老版本的PHP下调用新版本的PHP内置函数而产生的错误。因为你的老版本中这个PHP内置函数根本就不存在。例如,你在PHP老版本中调用mime_content_type()
    Fatal error:Call to undefinedfunction mime_content_type()
    解决:翻开PHP手册仔细核对你所使用的内置函数到底适用于PHP的哪些版本。在PHP手册当中对每一个内置函数都注明了详细的版本限制。例如(PHP 4 >= 4.3.0, PHP 5).所以,解决办法就是升级你的PHP版本,或者改换同类型的其他内置函数。

  4. 原因4:你对该函数的调用代码,写在了与函数声明不同的文件中。例如,你在a.php文件中写了这样的代码
    myFunction();
    而你的函数声明却在b.php中
    function myFunction(){// do something}
    解决:这种情况一般发生在PHP初学者身上,他们在调用函数时却忘了PHP不会自动的进行文件关联或引用。也就是说上面的情况中a.php与b.php根本就不会产生任何关系。这个时候你需要使用include()之类的函数将两者关联起来。

  5. 原因5:你对该函数的调用代码,写在了与函数声明不同的文件中,你也引入了该文件。但是你的函数调用代码位于引入文件代码之前。例如,你在a.php执行函数调用,而在b.php中声明函数。

    a.php代码

    myFunction();include('b.php');

    b.php代码

    function myFunction(){ echo '123';}

  6. 解决:像上面的代码这样,在执行时就会报错。因为PHP在执行函数调用时找不到该函数的声明。所以,绝对不要把函数的调用写在函数声明文件被引入之前。当然,如果你是在同一个php文件当中,你完全可以把调用函数写在函数声明之前。

  7. 原因6:你连续两次使用相同名称来定义一个函数,例如

    function myFunction(){}

    function myFunction(){}

    结果如下
    Fatal error:Cannot redeclare myfunction()(previously declared in(path):2)in(path) on line 1

    解决:
    找到已经声明过的函数,看看是什么需要导致你再次定义了它。如果只是单纯的忘记之前已经定义过,那么将其中一个声明删除掉就是。当然,你的情况可能给复杂。比如你的脚本文件排列异常混乱,并且你可能使用了大量的include()之类的函数,这将导致你很难从混乱的代码当中理清思路。

以上就是我爱编程网小编给大家带来的函数+php PHP调用了一个错误的函数?全部内容,希望对大家有所帮助!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“函数+php PHP调用了一个错误的函数?”相关推荐
PHP直接调用函数和调用另外一个文件中的函数的区别(PHP调用了一个错误的函数?)
PHP直接调用函数和调用另外一个文件中的函数的区别(PHP调用了一个错误的函数?)

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

2024-08-30 01:06:23
php调用一个函数 php引用函数的使用方法
php调用一个函数 php引用函数的使用方法

php点击按钮调用一个函数给你一个最简单的示例&lt;?phpfunctionquery(){........代码......}if($_POST["do"]=="yes"){query();}?&gt;&lt;inputtype="button"value="按钮"onclick="javascript:cmdclick()"/&gt;&lt;scr

2024-08-24 18:22:56
PHP直接调用函数和调用另外一个文件中的函数的区别 PHP函数调用的问题
PHP直接调用函数和调用另外一个文件中的函数的区别 PHP函数调用的问题

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

2024-08-10 04:52:50
php的move_uploaded_file函数,文件上传成功,但总出错误提示 封装一个php函数,能实现sql语句查询表里面的内容的功能,在调用函数就能执行
php的move_uploaded_file函数,文件上传成功,但总出错误提示 封装一个php函数,能实现sql语句查询表里面的内容的功能,在调用函数就能执行

PHP函数封装分分钟帮你实现数据脱敏处理,支持手机、邮箱、身份证号中文字符串!PHP函数封装轻松实现数据脱敏处理,适用于手机、邮箱、身份证号等中文字符串由技术博主极客小俊撰写数据脱敏是一种开发中常用的技术,它旨在隐藏重要数据,确保在不安全环境中保护敏感信息。简单来说,就是通过特定规则处理数据,使其难以识别,从而达到保护隐私的目的。在开发中,涉及用户个人信息、金融信息

2025-02-17 23:45:42
php调用函数为什么会出错?
php调用函数为什么会出错?

php调用函数为什么会出错?你好,很高兴能为您回答这个问题。php中的函数不是这样的调用的,php是在服务器端执行的,你这个onclick是在客户端执行的,所以,onclick调用的是javascript或vbscipt等其它前端脚本。你这样,测试一下,应该会明白了。希望可以帮助你!php自定义函数不能调用是怎么回事注意到你在使用_html这个自定义方法之前,只加载执行了一

2024-08-21 14:56:55
php中function函数的用法 PHP直接调用函数和调用另外一个文件中的函数的区别
php中function函数的用法 PHP直接调用函数和调用另外一个文件中的函数的区别

php中function函数的用法在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,

2024-09-04 15:12:23
php内部函数外部函数 PHP直接调用函数和调用另外一个文件中的函数的区别
php内部函数外部函数 PHP直接调用函数和调用另外一个文件中的函数的区别

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

2024-10-10 00:09:06
java 写入错误 用java向access数据库中读取和写入数据。读取时正常 但是写入时出现了错误:
java 写入错误 用java向access数据库中读取和写入数据。读取时正常 但是写入时出现了错误:

java写入错误你的class和app1_1连着了,这里一定要分开,并且app首字母要大写,改成这样的:publicclassApp1_1{publicstaticvoidmain(Stringargs[]){//这里里面的参数String和args也要分开,不要把中间的空格丢了。...}}最后就是文件名一定记得也要改成:App1_1java的各种异常JavaE

2024-06-22 15:34:23