php 프레임 워 크 CI(codeigniter)자동 로드 및 자체 생 성 대상 작업 사례 분석
3974 단어 php 프레임 워 크CIcodeigniter자동 로드
CI 의 autoload 는 사용 하기 쉽 고 자동 으로 대상 을 만 듭 니 다.그러나 그의 대상 은 하나 밖 에 없습니다.
우 리 는 대상 을 만들어 야 하 는 경우 가 많다.이것 은 매우 번거롭다.
다행히 우 리 는 만 들 수 있 는 방법 이 있 습 니 다.
library 사용자 정의 클래스 를 사용 할 때 자동 으로 불 러 오 거나 load 를 사용 하 는 방법 과 여러 개의 인 스 턴 스 를 자체 적 으로 생 성 하 는 방법 을 기록 합 니 다.
1.library 요구 에 부 합 된 사용자 정의 클래스 를 정의 합 니 다.
사용자 정의 클래스 를 정의 하려 면 library 에 두 는 것 이 좋 습 니 다.library 에 두 려 면 그 가 정 한 모드 로 바 꿔 야 합 니 다.대략 다음 과 같 습 니 다.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Created by PhpStorm.
* Date: 2018/9/28
* Time: 21:38
*/
class TestNewInstance
{
protected $CI;
private $age = 0;
public function __construct()
{
$this->CI =& get_instance();
}
public function setAge($age)
{
$this->age = $age;
}
public function getName()
{
$count = $this->CI->inner_model->getMaxIdVal();
return ' age:'.$this->age.'items_count:'.$count;
}
}
2.도입어떤 음성 개발 이 든 사용 하기 전에 도입 해 야 한다.
autoload 와 load 의 본질은 무엇 입 니까?아마도 전역(controller 의 기본 클래스)include+new 인 스 턴 스 작업 을 한 것 같 습 니 다.
만약 우리 가 자신의 new 인 스 턴 스 를 필요 로 한다 면,우 리 는 그것 의 load 체 제 를 사용 하 는 것 도 영향 을 주지 않 을 것 이다.이것 은 우리 가 그의 include 를 사용 한 것 과 같 지만,그 가 생 성 한 인 스 턴 스 를 우 리 는 사용 하지 않 았 다.
그럼 도입 하 는 방법 은 요?
첫 번 째,autoload 파일 에 있 는
$autoload['libraries']
배열 에 이런 것 을 추가 합 니 다.클래스 이름 만 있 으 면 대소 문 자 를 구분 하고 접미사 pp 가 필요 하지 않 습 니 다.두 번 째,load 를 사용 하 는 방법
$this->load->library('TestNewInstance');
상기 두 가지 방법 중,그 는 자동 으로 소문 자 테스트 뉴 인 스 턴 스 를 생 성하 여 호출 할 수 있 습 니 다.상기 두 가지 방법 으로 얻 은 실례 는 모두 일례 이다.
세 번 째,require(requireonce)또는 include(includeonce)불 러 옵 니 다.
(require 실 패 는 오 류 를 보고 합 니 다.include 실 패 는 오 류 를 보고 하지 않 고 계속 실행 합 니 다)
그러나 당신 은 이런 방법 을 통 해 도입 되 었 습 니 다.호출 할 수 있 는 인 스 턴 스 를 자동 으로 생 성하 지 않 았 습 니 다.당신 은 스스로 생 성 해 야 합 니 다.
코드:
// 2
// APPPATH Application ,
//
include (APPPATH.'libraries/TestNewInstance.php');
require_once (APPPATH.'libraries/TestNewInstance.php');
3.인 스 턴 스 획득autoload 나 load 를 통 해 들 어 오 는 클래스 라면 호출 할 수 있 는 소문 자 인 스 턴 스 변 수 를 자동 으로 생 성 했 습 니 다.$this->xxx 만 사용 하면 호출 할 수 있 습 니 다.더 이상 언급 하지 않 습 니 다.
여기 서 인 스 턴 스 를 자주 생 성 하 는 방법 에 중점 을 두 었 다.
방법 1:클래스 에 정적 함 수 를 직접 추가 하고 new 대상 을 되 돌려 줍 니 다.예 를 들 어:
public static function getInstance()
{
return new TestNewInstance();
}
사용 시 이 정적 함 수 를 직접 호출 하여 획득:
$newInstance1 = TestNewInstance::getInstance();
$newInstance1->setAge(20);
$name1 = $newInstance1->getName();
$newInstance2 = TestNewInstance::getInstance();
$newInstance2->setAge(25);
$name2 = $newInstance2->getName();
방법 2:new 생 성 대상 을 직접 호출 합 니 다.(이 방법 은 정적 함수 가 필요 없습니다.)
$newInstance1 = new TestNewInstance();
$newInstance1->setAge(30);
$name1 = $newInstance1->getName();
$newInstance2 = new TestNewInstance();
$newInstance2->setAge(38);
$name2 = $newInstance2->getName();
실례 를 만 드 는 방법 이 든 방법 이 든 상 관 없 이 도입 할 때 위의 몇 가지 도입 법 은 모두 통용 된다.이전 글 에서 cli 호출 법 을 사용 하 는 것 을 언급 했 는데 이런 정적 함수 가 인 스 턴 스 를 되 돌려 주 는 방법 이 통 하지 않 습 니 다.도입 할 때 문제 가 생 겼 을 수도 있 고 나중에 다시 연구 할 수도 있 습 니 다.
더 많은 CodeIgniter 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 이 CodeIgniter 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
php 경량급 rpc 프레임 워 크 yarphp 경량급 rpc 프레임 워 크 yar 목적: 사용 필드: yar 설치 홈 페이지 상세 안내 페이지 yar 의 특징: 사용 방법: 장점:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.