Laravel 에서 xdebug 를 통해 디버깅하는 과정을 알아본다.


0. PHP 설치

brew install php71

1. Xdebug 설치 


brew install homebrew/php/<php-version>-xdebug 에서 <php-versino>을 자기에 맞는 php 버전으로 치환 아래는 예제

brew install homebrew/php/php71-xdebug


2. Xdebug 설정 변경하기


맥에서의 위치: /usr/local/etc/php/7.1/conf.d


[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_autostart=1
xdebug.default_enable=1
xdebug.remote_port=9001
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM


3. phpstorm run configuraiton 추가


- run configuration 에 들어간후 아래와 같이 PhpWeb Application 을 추가한다



- severs 옆버튼인 ...을 클릭해서 서버를 추가해준다


- + 버튼을 클릭하여 서버를 추가해주고

Host부분을 디버깅하고자 하는 주소를 입력한다

* 주의사항

Use path mappings 를 체크해제한다



Ok를 눌러 돌아온다


4. Phpstorm 의 설정부분에서 Php항목의 Debug 항목을 선택 DBGp Proxy 부분을 아래 스크린샷과 같이 변경. 

IDE key와 Port는 위 Xdebug설정에 맞춰서 입력해주면 된다. 자기 입맛에 맞게 커스터마이즈 하면된다


5. 실제 디버깅하고 싶은 곳에 브레이크 포인트를 설정하고 Debug 버튼을 클릭하면 아래 화면과 같이 해당하는 곳에서 디버거가 멈춰져 있는 것을 확인 가능하다. 



참조: 

1. https://laravel-news.com/xdebug-phpstorm-valet

'PHP > Laravel' 카테고리의 다른 글

Laravel 구동을 위한 Vagrant 설치 및 설정  (0) 2016.09.13

PHP 프로젝트를 이용할떄 Composr 를 이용해서 본인이 사용한 작성한 클래스를 불러와 사용하는 방법에 대해 서술한다. 


절차:


0. composer 설치및 composer init

1. PSR-4 표준에 맞는 폴더구조로 클래스파일과 함께 생성 (이때 네임스페이스에 주의한다)  

2. composer.json 에 폴더 연결 

"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"tests/PassportTestCase.php"
],
"psr-4": {
"Tests\\": "tests/"
}
},

3. composer auto-dumpload 를 하면 클래스 위치들을 맵핑해주는 파일이 자동 생성된다.

4. 클래스를 사용하고자 하는 파일에서 autoload.php 파일 로드


** 주의점:

1. 클래스명과 파일명이 일치

2.한파일에는 클래스 하나만 존재


예제 파일구조를 본다

src

autoload.php

index.php

Users

User.php

UserDetail.php



index.php 에서 사용하자하면

require("./autoload.php")


- User.php 

<?php namespace Users;


class User { }


- UserDetail.php 

<?php namespace Users;


class UserDetail { }


- index.php


<?php

use Users\User;

$user = new User();








'PHP > PHP 문법' 카테고리의 다른 글

설치된 PHP가 threadsafe 혹은 nonthreadsafe 인지 알아내는법  (0) 2016.07.23
DB접속 (MySQL 기준)  (0) 2016.04.21

ES5.1

var myobj = (function () {

    // private members

    var name = "my, oh my";

    // implement the public part

    return {

        getName: function () {

            return name;

        }

    };

}());

myobj.getName(); // "my, oh my"



메모리 아끼는법 

function Gadget() {

    // private member

    var name = 'iPod';

    // public function

    this.getName = function () {

        return name;

    };

}

Gadget.prototype = (function () {

    // private member

    var browser = "Mobile Webkit";

    // public prototype members

    return {

        getBrowser: function () {

            return browser;

        }

    };

}());

 

 

ES6 

class Gadget {

var name = 'iPod'

getName() {

return name; 

}



static getBrowser() {

  var browser = "Mobile Webkit";

  return browser;

  }

}

 

 

ES2021+

class Gadget {

  #name = 'iPod'

  getName() {

  return name; 

  }
}

 

참조: 

http://www.2ality.com/2016/01/private-data-classes.html

3.x 버전대가 2016년 12월을 기준으로 종료된다기에 기존 3.2.9 버전의 스프링에서 4.x 버전대로 마이그레이션을 시도하였다.


다행히도 기존 진행하는 프로젝트에서 3.x 


Pom.xml 에서 주의해서 

<properties> <java-version>1.8</java-version> <org.springframework-version>4.3.5.RELEASE</org.springframework-version> <org.springframework-security-version>4.2.0.RELEASE</org.springframework-security-version> </properties> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- MappingJacksonJsonView --> <!-- <dependency> --> <!-- <groupId>org.codehaus.jackson</groupId> --> <!-- <artifactId>jackson-mapper-asl</artifactId> --> <!-- <version>1.9.13</version> --> <!-- </dependency> --> <!-- <dependency> --> <!-- <groupId>org.codehaus.jackson</groupId> --> <!-- <artifactId>jackson-core-asl</artifactId> --> <!-- <version>1.9.13</version> --> <!-- </dependency> -->


다른 Configuration  파일들도 schemaLocation 부분에 수정을 해주었다. xxx-3.0.xsd 로 로된부분을

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        
</beans>


자동으로 인식하도록 숫자부분을 아래와 같이 변경했다.

http://www.springframework.org/schema/context/spring-context.xsd



resources 부분도 아래와 같이 변경했다.

<mvc:resources location="/public/" mapping="public/**"/>
<mvc:resources location="/css/" mapping="css/**"/>
<mvc:resources location="/images/" mapping="images/**"/>
<mvc:resources location="/js/" mapping="js/**"/>


JacksonJsonView를 사용하지 않기때문에 주석처리하였다 사용하기 위해서는 2버전을 사용해야한다.

<!-- <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> -->


이렇게 하여 마이그레이션이 완료되었다.

마이그레이션은 프로젝트 마다 케이스바이 케이스기 떄문에 스프링버전에 의존하는 라이브러리가 없나 살펴보아야한다.

더 자세한 마이그레이션 관련은 아래에 링크된 스프링 공식홈페이지의 깃허브를 참조한다. 


참조:

1. https://github.com/spring-projects/spring-framework/wiki/Migrating-from-earlier-versions-of-the-spring-framework

'Java > Spring Framework' 카테고리의 다른 글

Spring 한글설정  (0) 2015.03.19
Spring AOP  (0) 2015.01.19
스프링 스터디 - 의존성 주입 대상  (0) 2015.01.14
스프링 학습 개발 도구 설치  (0) 2015.01.13
프레임 워크 배우기 좋은 웹사이트  (0) 2014.11.04

파이썬 디버깅시 유용하게 사용하는 Ipdb로 디버깅하는 도중 루프안에 같혀 강제 종료해야할 경우 

아래 혹은

import sys
sys.exit()

아래의 방법으로 시도한다 (2.7과 3.5 버전의 경우 현재 확인결과 아래 방법으로 작동되었다)

import os
os._exit(0)


+ Recent posts