codeigniter - php CI框架的core/common.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 的一大卖点。
可能
- 当多次引入这个文件时,防止发生函数重复声明错误
- 兼容没的提供内置函数的PHP版本
给出的代码符合第一种情况
如果你觉得这是一个问题的话,其实可以通过命名空间来解决
多个php版本功能兼容、避免框架自带的函数和开发者的函数冲突,原因有二。
1,ci是一个历史很悠(落)久(后)的框架,在ci起来的那些年,php那里还没有命名空间,很多新功能特性不支持
2,我觉得ci这样的设计初衷里,肯定不会是为了能让用户重写这些函数,因为要实现继承和重写,肯定还是类方便。
1.预先实现一些php没有实现但是将来可能实现的函数,避免冲突
2.解决重复加载问题。
不是多余的,原因如下:
1.向后兼容,避免后面的php版本实现了同名函数
2.方便开发者扩展。看看CI的文档就知道,开发者如果需要重写框架提供的函数,只需要把函数名写成一样的就可以了。
CI不是一个完全面向对象的框架,保留了很多公共函数,更没有命名空间的概念,所以要用这种方法来实现框架可扩展。
如果想删掉这些的话,
可以用命名空间
否则会起命名重复冲突的

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
