라벨이 CodeIgniter인 게시물 표시

PHP 코드이그나이터에 적합한 IDE 넷빈즈

이미지
PHP IDE 로는 서브라임텍스트 같은 텍스트 편집기 또는 이클립스를 많이 쓰는데 코드어시스트도 안되고 속도도 많이 느리다. C# 은 비주얼스튜디오라는 막강한 IDE 프로그램이 있는데 PHP 는 이클립스, Php스톰이 있다곤 하지만, Visual Studio 만큼 좋다고 느끼지 못했다. 비주얼 스튜디오에서 Php for Visual Studio 라는 유료 프로그램이 있다는데 코드이그나이터까지 지원하는지는 모르겠다. Java하면 이클립스 라고 떠올리기 쉬운데 사실 Java IDE 는 넷빈즈가 좋다. 사실 잘 몰랐었는데 IBM 출신의 프로그래머에게 추천받았었다. https://netbeans.org/ Java는 Oracle 소속이고 Oracle 에서 넷빈즈를 만든다. 그런데 넷빈즈에 PHP 를 지원하는게 아닌가? 게다가 코드이그나이터 까지 지원한다. 플러그인 다운로드 https://github.com/nbphpcouncil/nb-ci-plugin/releases 설치방법은 이렇다. https://stackoverflow.com/questions/9308604/how-to-integrate-codeigniter-with-netbeans-fully 1. 플러그인 다운로드를 받고 (파일 2개) 2. 플러그인을 넷빈즈에 설치한다. Tools > Plugins > Downloaded (tab) > Add Plugins... > (browse those downloaded files in your local directory) > Open >> Install >> Restart NB 3. 플러그인을 활성화 시킨다. Tools > Options > PHP > Frameworks & Tools (tab) > select CodeIgniter > Base Files > Add Zip... > now type a...

CI에서 Google API 를 사용해보자 1

이미지
CI (코드이그나이터)에서 구글 API 를 사용하려면 순서는 이렇다. (코드이그나이터 설치는 되어있다면) 1. 먼저 Google API 신청을 해야한다. Google API Library 를 보면, 종류가 많은데 Google+ API 를 신청하면 소셜 로그인을 사용 할 수 있게 된다. 회원가입을 받지 않고, 구글 아이디로 사이트를 이용할 수 있는 것이다. 요론 자세한 설명은 앞으로 생략하겠다. 2. 신청이 완료되면 API KEY 를 주는데, 잘 받아 적어둔다. 3. 코드이그나이터 컴포저를 이용해 Google API Client 를 다운로드 받는다. (시간이 꽤 걸린다) 컴포저 주소는 google/apiclient:^2.0 코드이그나이터에서 컴포저 사용법은 앞전에 본 블로그에서 알려줬다. 4. Google API 설치가 끝났다면, 코드이그나이터에서 예제 프로그램을 실행해 본다. View단의 소스는 아래와 같다. // include your composer dependencies require_once 'vendor/autoload.php'; $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); $client->setDeveloperKey("YOUR_APP_KEY"); $service = new Google_Service_Books($client); $optParams = array('filter' => 'free-ebooks'); $results = $service->volumes->listVolumes('Henry David Thoreau', $optParams); foreach ($results as $item) { echo $item['volumeInfo']['t...

코드이그나이터에서 컴포저를 써보자

이미지
라라벨 프레임워크가 부러운 점이 있다면, 컴포저 일텐데 사실 코드이그나이터도 컴포저가 된다. 그것도 간단하게 말이다. 1. 컴포저를 설치한다. https://getcomposer.org/download/ Composer-Setup.exe 파일을 받아 설치한다. php 가 설치되어 있으면, 경로는 알아서 잡아준다. 2. composer.phar 파일을 코드이그나이터 루트 경로에 다운로드 해둔다. https://getcomposer.org/composer.phar 3. 코드이그나이터의 application > config > config.php 파일의 120 line 을 보면 Composer auto-loading 이 있다. FALSE 로 되어있는걸 TRUE 로 바꿔주기만 하면 된다. 4. 패키지스트 사이트로 이동해 마음에 드는 php 팩키지를 설치하기 위해 검색해 본다. https://packagist.org 엔터는 치지말자. facebook 이라고 입력하면 페이스북 소셜 로그인 관련 팩키지가 나온다. 5. 명령 프롬프트 커맨드 콘솔창을 연다. 시작 > 실행 > cmd 코드이그나이터가 설치된 경로로 이동한다. cd 가 번거롭다면, 명령프롬프트 속성창에서 시작위치를 수정하여 고정시켜 둔다. 6. 콘솔창에 컴포저 설치 명령어를 입력한다. php composer.phar require kdyby/facebook 페이스북으로 검색했을때 팩키지 이름이 kdyby/facebook 이다. 클릭했을때 주소이기도 하다. 7. 설치가 완료되면 코드이그나이터 루트 경로에 vendor 라는 폴더가 생긴걸 볼 수 있다. 이제 라라벨처럼 코드이그나이터 소스에서 설치한 컴포저를 가져다 쓰기만 하면 된다. autoload.php 를 require 한다음 use 로 사용할 팩키지를 선택 new 로 생성자를 만들어 사용하면 된다. 팩키지스트 라는 공공의 패키지 저장소가 ...

코드이그나이터, SQL 대신 CSV 로 대체

이미지
GAE 요금체계상 SQL 쿼리당 돈을 받는것도 있기 때문에 SQL 쿼리가 빈번하면 요금이 올라간다.. ㄷㄷ 간단한 정보조차  MySQL 쿼리로 불러오도록 설계 했는데 생각해보니, 요금 압박이 클것만 같았다. 그래서 여러 테이블을 JOIN 안해도 되는 Relation 없는 부분은 MySQL DB 대신 csv 파일에서 불러오도록 했다. 간단히 Model 부분만 수정하면, View 나 Controller 부분은 수정하지 않아도 DB에서 읽은것처럼 잘 작동한다. public function get_file() { // fopen 함수로 파일을 연다. $fp = fopen("./assets/csv/file_name.csv", "r"); // 헤더가 되는 첫줄을 읽는다. $header = fgetcsv($fp); // return 할 배열을 만든다. $data = array(); // 파일을 읽는다. while ($row = fgetcsv($fp)) { $arr = array(); foreach ($header as $i => $col) { $arr[$col] = $row[$i]; } $data[] = $arr; } // fopen 함수를 닫는다. fclose($fp); // 결과를 return 한다. return $data; } 파일은 DB 에서 CSV 로 변환해야 하는데, MySQL 을 쓴다면 Workbench 에서 Export 하면 쉽게 할 수 있다.

CI 세그먼트 한글 문제

코드이그나이터의 주소체계입니다.  http://example.com/[controller-class]/[controller-method]/[arguments] arguments 부분에 한글이 들어가는 주소가 있는데 (게시물 제목 등), post 로 받아와 url_title 로 주소를 가공할 경우, 정상적으로 작동하지 않는 경우가 있습니다. 그럴경우 아래의 소스코드처럼 url_helper.php 와 config.php 파일에 가-힣  을 추가해 주면 한글주소도 정상적으로 작동하게 됩니다. // system/helpers/url_helper.php 495 line '[^가-힣a-z0-9 _-]' => '', // application/config/config.php 157 line $config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-'; 하지만 여기에도 문제가 있는데요. 일본어나 중국어같은 전각문자의 경우에도, 정상적으로 작동을 안하는데요. 그럴경우 application/config/config.php 파일의 157 line 부분을 그냥 주석처리 해주시면 됩니다. 아니면 아래처럼 일본어 히라가나와 한자, 일본식 영어,숫자 까지 예외처리를 해주셔야죠. // application/config/config.php 157 line $config['permitted_uri_chars'] = '一-龠ぁ-んァ-ヴーa-zA-Z0-9a-z 0-9~%.:_-'; 코드이그나이터 3.0 을 기준으로 작성하였습니다.

CI 다중 사이트 설정

코드이나이터는 하나만 인스톨을 하고, 여러 사이트를 서브도메인으로 연결하여 사용하려면 index.php 파일의 application_folder를 다음 처럼 수정하면 된다. /* *--------------------------------------------------------------- * APPLICATION FOLDER NAME *--------------------------------------------------------------- * * If you want this front controller to use a different "application" * folder than the default one you can set its name here. The folder * can also be renamed or relocated anywhere on your server. If * you do, use a full server path. For more info please see the user guide: * http://codeigniter.com/user_guide/general/managing_apps.html * * NO TRAILING SLASH! */ // $application_folder = 'application'; switch($_SERVER['HTTP_HOST']) { case('www.a.com') : $application_folder = 'www.a.com'; break; case('www.b.com') : $application_folder = 'www.b.com'; break; case('www.c.com') : $application_folder = 'www.c.com'; break; de...