10个必须收藏的php代码样例(php范例代码大全)

发布时间:2022-11-15

本文目录一览:

  1. PHP多态代码实例
  2. 几种常用PHP连接数据库的代码示例
  3. 高质量PHP代码的50个技巧(3)
  4. php最经典,最基础的代码,适合入门的

PHP多态代码实例

这篇文章主要介绍了PHP多态代码实例,本文用2个代码实例来演示PHP中的多态,需要的朋友可以参考下。 多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果) 这里两个例子: 第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。因为你调用的时候不是 $stu->showGrade() 而是各自自己的方法;

class stu {
    public function showGrade() {
        echo "base class";
    }
}
class xiaomin extends stu {
    public function showGrade() {
        echo "is son show 80";
    }
}
class xiaoli extends stu {
    public function showGrade() {
        echo "is son show 60";
    }
}
function doit($obj) {
    if (get_class($obj) != "stu") {
        $obj->showGrade();
    }
}
doit(new xiaoli());
doit(new xiaomin());

第二个例子:dovoice 参数规定了 $objanimal,意识就是用接口接受了实现类对象,进行了向上转型。这就符合同一类型,不同结果了,这就是多态; 实际上在 Java 中会是 animal a = new dog(); 这样子的;因为 PHP 是弱类型语言,没有对象转型机制。

interface animal {
    public function voice();
}
class cat implements animal {
    public function voice() {
        echo "miao~~~<br>";
    }
}
class dog implements animal {
    public function voice() {
        echo "wang~~~<br>";
    }
}
function dovoice(animal $obj) {
    $obj->voice();
}
dovoice(new dog());
dovoice(new cat());

几种常用PHP连接数据库的代码示例

PHP连接MySQL数据库代码

<?php
$mysql_server_name = 'localhost'; // 改成自己的mysql数据库服务器
$mysql_username = 'root'; // 改成自己的mysql数据库用户名
$mysql_password = '12345678'; // 改成自己的mysql数据库密码
$mysql_database = 'mycounter'; // 改成自己的mysql数据库名
$conn = mysql_connect($mysql_server_name, $mysql_username, $mysql_password);
mysql_query("CREATE DATABASE mycounter DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;", $conn);
mysql_select_db($mysql_database, $conn);
$sql = "CREATE TABLE `counter` (`id` INT(255) UNSIGNED NOT NULL AUTO_INCREMENT, `count` INT(255) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`id`)) TYPE = INNODB;";
$result = mysql_query($sql, $conn);
mysql_close($conn);
echo "Hello!数据库mycounter已经成功建立!";
?>

PHP连接Access数据库代码方法

<?php
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data/db.mdb");
$conn->Open($connstr);
$rs = new com("ADODB.RecordSet");
$rs->Open("select * from szd_t", $conn, 1, 1);
while (!$rs->eof) {
    $f = $rs->Fields(1);
    echo $f->value;
    $rs->MoveNext();
}
?>

高质量PHP代码的50个技巧(3)

/**
 * Method to execute a command in the terminal
 * Uses :
 * 1. system
 * 2. passthru
 * 3. exec
 * 4. shell_exec
 */
function terminal($command)
{
    // system
    if (function_exists('system')) {
        ob_start();
        system($command, $return_var);
        $output = ob_get_contents();
        ob_end_clean();
    }
    // passthru
    else if (function_exists('passthru')) {
        ob_start();
        passthru($command, $return_var);
        $output = ob_get_contents();
        ob_end_clean();
    }
    // exec
    else if (function_exists('exec')) {
        exec($command, $output, $return_var);
        $output = implode("\n", $output);
    }
    // shell_exec
    else if (function_exists('shell_exec')) {
        $output = shell_exec($command);
    }
    else {
        $output = 'Command execution not possible on this system';
        $return_var = 1;
    }
    return array('output' => $output, 'status' => $return_var);
}
terminal('ls');

上面的函数将运行shell命令,只要有一个系统函数可用,这保持了代码的一致性。

灵活编写函数

function add_to_cart($item_id, $qty)
{
    $_SESSION['cart']['item_id'] = $qty;
}
add_to_cart('IPHONE3', 2);

使用上面的函数添加单个项目。而当添加项列表的时候,你要创建另一个函数吗?不用,只要稍加留意不同类型的参数,就会更灵活。如:

function add_to_cart($item_id, $qty)
{
    if (!is_array($item_id)) {
        $_SESSION['cart'][$item_id] = $qty;
    } else {
        foreach ($item_id as $i_id => $qty) {
            $_SESSION['cart'][$i_id] = $qty;
        }
    }
}
add_to_cart('IPHONE3', 2);
add_to_cart(array('IPHONE3' => 2, 'IPAD' => 5));

现在,同个函数可以处理不同类型的输入参数了。可以参照上面的例子重构你的多处代码,使其更智能。

有意忽略PHP关闭标签

我很想知道为什么这么多关于PHP建议的博客文章都没提到这点。

<?php
echo "Hello";
// Now don't close this tag

这将节约你很多时间。我们举个例子: 一个 super_class.php 文件

<?php
class super_class
{
    function super_function()
    {
        // super code
    }
}
?>
// super extra character after the closing tag

index.php

<?php
require_once('super_class.php');
// echo an image or pdf, or set the cookies or session data

这样,你将会得到一个 Headers already send error。为什么?因为 “super extra character” 已经被输出了。现在你得开始调试啦。这会花费大量时间寻找 super extra 的位置。因此,养成省略关闭符的习惯:

<?php
class super_class
{
    function super_function()
    {
        // super code
    }
}
// No closing tag

这会更好。

在某地方收集所有输入,一次输出给浏览器

这称为输出缓冲,假如说你已在不同的函数输出内容:

function print_header()
{
    echo "<p id='header'>Site Log and Login links</p>";
}
function print_footer()
{
    echo "<p id='footer'>Site was made by me</p>";
}
print_header();
for ($i = 0; $i < 100; $i++) {
    echo "I is : $i <br>";
}
print_footer();

替代方案,在某地方集中收集输出。你可以存储在函数的局部变量中,也可以使用 ob_startob_end_clean。如下:

function print_header()
{
    $o = "<p id='header'>Site Log and Login links</p>";
    return $o;
}
function print_footer()
{
    $o = "<p id='footer'>Site was made by me</p>";
    return $o;
}
echo print_header();
for ($i = 0; $i < 100; $i++) {
    echo "I is : $i <br>";
}
echo print_footer();

为什么需要输出缓冲: 可以在发送给浏览器前更改输出。如 str_replace 函数或可能是 preg_replace 或添加些监控/调试的HTML内容。 输出给浏览器的同时又做PHP的处理很糟糕。你应该看到过有些站点的侧边栏或中间出现错误信息。知道为什么会发生吗?因为处理和输出混合了。

发送正确的MIME类型头信息,如果输出非HTML内容的话

输出一些XML:

$xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>";
$xml .= "<response><code>0</code></response>";
// Send xml data
echo $xml;

工作得不错。但需要一些改进。

$xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>";
$xml .= "<response><code>0</code></response>";
header("Content-Type: application/xml");
echo $xml;

php最经典,最基础的代码,适合入门的

PHP是一种可以嵌入到HTML中的运行在服务器端的脚本语言,所以为了体现PHP的特性我们可以分两种模式来实现PHP代码。

1. PHP嵌入到HTML中,例如 index.php

<html>
<head></head>
<body>
    <!-- 因为PHP嵌入到HTML中,所以需要完全区分PHP代码和HTML代码 -->
    <?php
    // 输出hello world
    echo 'hello world';
    ?>
</body>
</html>

2. PHP独立文件,只有PHP代码,例如 index.php

<?php
// 输出
echo 'hello world';
// 不需要闭合标签