目次
回复内容:
ホームページ バックエンド開発 PHPチュートリアル codeigniter - php CI框架的core/common.php中一些函数的疑问?

codeigniter - php CI框架的core/common.php中一些函数的疑问?

Jun 06, 2016 pm 08:40 PM
codeigniter php

<code>if ( ! function_exists('is_php'))
{
    function is_php($version = '5.0.0')
    {
        static $_is_php;
        $version = (string)$version;

        if ( ! isset($_is_php[$version]))
        {
            $_is_php[$version] = (version_compare(PHP_VERSION, $version) </code>
ログイン後にコピー
ログイン後にコピー

所有的函数都存在

<code>if ( ! function_exists('is_php'))
{

}
</code>
ログイン後にコピー
ログイン後にコピー

这样的结构,这样做是否显得有点多余。

回复内容:

<code>if ( ! function_exists('is_php'))
{
    function is_php($version = '5.0.0')
    {
        static $_is_php;
        $version = (string)$version;

        if ( ! isset($_is_php[$version]))
        {
            $_is_php[$version] = (version_compare(PHP_VERSION, $version) </code>
ログイン後にコピー
ログイン後にコピー

所有的函数都存在

<code>if ( ! function_exists('is_php'))
{

}
</code>
ログイン後にコピー
ログイン後にコピー

这样的结构,这样做是否显得有点多余。

对框架来说是不多余的.有可能使用者会在加载这个文件之前加载自己的function文件.

当然不是,这样是避免框架自带的函数和开发者的函数冲突。

方便扩展。

框架首先加载开发者的函数,然后加载系统函数。

开发者只需要些一个同名函数,就可以覆盖系统函数。

这也是 CI 的一大卖点。

可能

  1. 当多次引入这个文件时,防止发生函数重复声明错误
  2. 兼容没的提供内置函数的PHP版本

给出的代码符合第一种情况

如果你觉得这是一个问题的话,其实可以通过命名空间来解决

多个php版本功能兼容、避免框架自带的函数和开发者的函数冲突,原因有二。

1,ci是一个历史很悠(落)久(后)的框架,在ci起来的那些年,php那里还没有命名空间,很多新功能特性不支持
2,我觉得ci这样的设计初衷里,肯定不会是为了能让用户重写这些函数,因为要实现继承和重写,肯定还是类方便。

1.预先实现一些php没有实现但是将来可能实现的函数,避免冲突
2.解决重复加载问题。

不是多余的,原因如下:
1.向后兼容,避免后面的php版本实现了同名函数
2.方便开发者扩展。看看CI的文档就知道,开发者如果需要重写框架提供的函数,只需要把函数名写成一样的就可以了。
CI不是一个完全面向对象的框架,保留了很多公共函数,更没有命名空间的概念,所以要用这种方法来实现框架可扩展。

如果想删掉这些的话,
可以用命名空间
否则会起命名重复冲突的

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles