55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨PHP 7+ 프로그래밍: 객체지향
DatabaseSessionHandler 클래스의 gc($maxlifetime) 메소드에 대해 질문드립니다.
Session을 다루다 추가로 궁금한 것이 있어 여기에 남겨봅니다. 프로젝트에서 SessionHandlerInterface 구현체로 DatabaseSessionHandler 클래스를 사용하는 모습을 볼 수 있고, 이 클래스의 public functoin gc($maxlifetime) 메소드는 만료된 세션을 제거하는 용도로 사용하는 것을 알 수 있었습니다. 시스템 안에서 자동으로 gc($maxlifetime) 메소드가 호출 될 것으로 보이는데요. 이 경우 gc($maxlifetime) 메소드가 호출 될 때 파라미터로 전달되는 $maxlifetime 값(아규먼트)의 경우 php.init에 설정된 session_maxlifetime가 대입되는 것이 맞는지 궁금합니다. (물론 php.ini 설정을 PHP 코드로 하여금 변경할 수 있겠지만요.)
- 미해결PHP 7+ 프로그래밍: 객체지향
Xdebug 설치 후 php index.php 실행하면 오류가 납니다..!
PS C:\php7.4\local> php .\index.php Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-( 위 오류가 나는데요.. 구글링 해도 정보가 없어서요.ㅜ 강의를 보면 강사님도 오류가 나긴 하시던데.. 바로 터미널에서 실행시 없어 지시더라구요.. 처음 에러가 php -S localhost:8080 를 입력하면 뭔가 cloging이 되고 이후로 에러가 나는거 같습니다..답변좀 부탁드립니다.ㅜ
- 해결됨PHP 7+ 프로그래밍: 객체지향
CentOS 7.* 서버쪽으로 배포를 해보던 중에 질문드립니다.
안녕하세요. 프로젝트 강의를 통해 만든 결과물을 실제 리눅스 서버쪽으로 배포를 해보려고 합니다. 서버환경은 아래와 같습니다. ----------------[서버 Spec]---------------- OS: CentOS 7.9 PHP: PHP 7.3 DB: MariaDB 10.4.17 Web Server: Apache 2.4 -------------------------------------------- 서버의 일반 계정을 생성 한 후 아파치 가상호스트(VirtualHost) 설정 파일을 통해 아래와 같이 설정해 보았는데, 500 ERROR 페이지로 전환되고 있어 아파치 에러 로그를 보며 해답을 찾아보아도 해결을 못하고 있습니다. 옛 레거시 PHP 같은 경우 위의 가상호스트 설정만으로도 정상적으로 홈페이지가 열렸는데요. 이 프로젝트가 잘 열리기 위한 추가 설정이 필요한지 궁금합니다.
- 해결됨PHP 7+ 프로그래밍: 객체지향
User 클래스에 대한 질문입니다.
안녕하세요, 강의를 보며 프로젝트 예제 코드를 따라 타이핑 하면서 궁금한 것이 있어 질문드립니다. 아마 '36-메인(Index)' 강의에서 Post 클래스를 사용함에 있어 생겼었떤 궁금증과 동일할 거 같습니다. '회원가입' 처리를 위해 UserController::store 정적 메소드에서 'POST' 방식으로 넘어온 'email', 'password' 데이터를 User 객체의 프로퍼티(멤버변수)로 설정하는 코드를 볼 수 있었습니다. 하지만 실제 User 클래스에서는 가령 public $email, public $password와 같이 프로퍼티(멤버변수)가 선언되어 있지 않았는데요. 이게 어떻게 가능하게 된건지 원리가 궁금합니다. P.S 저는 Java(SpringFramework)도 함께 공부를 진행중에 있습니다.(실무에서 Java, PHP 둘 다 쓰기에...) Java에서 클래스의 성질과 비슷하다라고 생각하니 이번 강의에서 보여주셨던 코드가 동작하는게 이해가 가지 않더라구요. 미리 답변 감사드립니다.
- 해결됨PHP 7+ 프로그래밍: 객체지향
password_verify(string, hash) 함수가 매번 false가 나오는 것에 대한 해결 방법이 궁금합니다.
안녕하세요, 프로젝트 '인증' 파트에서 로그인 시 입력하게 되는 이메일과 비밀번호를 AuthController, AuthService를 통해 처리하는 것을 확인 할 수 있었습니다. 저는 현재 PHP 8.0.0 버전으로 코딩을 진행하고 있습니다. 다만, AuthService::login 로직에서 password_verify(string, hash)가 항상 false로 결과 값이 반환되는 것을 확인했습니다. 처음에는 예제 코드를 타이핑하는데 오탈자가 있었나 확인해 보았지만 그런 경우는 없었습니다. 이와 동일한 이슈에 대해 찾아보았으나 여러 개 있었고, 그 중 PHP 8 환경에서의 이슈를 다룬 블로그를 발견했습니다. (https://blog.naver.com/PostView.nhn?blogId=gwi01304&logNo=222269515571) PHP 버전 업데이트가 되면서 해당 함수의 동작 방식이 달라진 것인지 알 수 있을까요? 혹시 몰라서 저의 깃헙 레포지토리 URL을 여기에 공유해 드리겠습니다. GitHub URL: https://github.com/painkill2r/php-oop-project ============================================= 추가적으로 password_verify(string, hash) 함수의 동작 원리에 대해 궁금합니다. PHP Manual에서도 내부 동작 원리가 어떻게 되는지는 기재되어 있지 않더라구요. 첫 번째 인자로 주어진 string 값을 내부적으로 password_hash() 함로 암호화(?)하고, 이를 두 번째 인자와 비교하는게 맞을까요?
- 해결됨PHP 7+ 프로그래밍: 객체지향
AuthService::logout 메소드에서 Session 데이터를 비우는 방법에 대한 질문입니다.
안녕하세요, '로그아웃' 구현 부분에서 세션을 비우는 처리에 대해 질문드립니다. 만약, 운영중인 사이트를 이용한다고 가정했을 때 아래와 같이 대부분이 로그인 및 로그아웃 절차가 진행된다고 생각합니다. 1. 홈페이지 로그인: 세션에 유저 데이터 생성 2. 홈페이지 이용 3. 브라우저를 닫거나 로그아웃 버튼 클릭: 세션이 완전이 사라지거나, 세션은 있되 세션에서 유저 정보가 비워짐 3번 항목에서 보통 PHP에서 세션을 비울 때(삭제할 때) 아래 두 함수를 쓰는 모습을 볼 수 있었는데요. 1. session_destory() => 전체 세션을 삭제(예로 세션 저장소(파일시스템의 세션 파일 또는 DB의 세션 관리 Table의 세션 데이터)) 2. session_unset() => 세션에서 변수만 삭제(CODE E) $_SESSION = array();) 이 외 세션에서 '유저' 정보만 비우는 경우(CODE EX) $_SESSION['user'] = array();)에는 어떤 경우가 있는지 알 수 있을까요?
- 해결됨PHP 7+ 프로그래밍: 객체지향
'34-프로바이더(Providers)' 강의 07:00 ~ 07:10 부분에서 주의할 점 공유합니다.
안녕하세요. '34-프로바이더(Providers)' 강의 07:00 ~ 07:10 부분에서 주의할 점 공유합니다. 위 영상 시간 내에 편집의 흔적인지는 몰라도 /resource 디렉토리 내 /resources/views 디렉토리가 생성되는 것을 볼 수 있습니다. 이 부분을 놓치고 넘어가는 경우 '36강-메인(Index)' 강의를 듣다가 View를 출력하는 부분에서 헤맬 수 있으니 주의하시기 바랍니다.
- 해결됨PHP 7+ 프로그래밍: 객체지향
'routes/web.php'에서 '/' URL에 대한 라우트 설정 시 처리할 Handler 선언에 대한 질문입니다.
안녕하세요. '/' URL에 대한 라우트 선언 시 궁금한 점이 있어 질문드립니다. 강의 08:45 부분에서 '/' URL을 처리할 Handler로 '\App\Controllers\IndexController::index'와 같이 선언하는 것을 볼 수 있었습니다. IndexController 클래스의 index() 메소드가 정적 메소드로 선언되어 있으므로 '::'를 사용하는 것은 이해가 되었는데요. '괄호()'를 생략했음에도 오류 없이 동작하는 이유에 대해 궁금합니다. '\App\Controllers\IndexController::index()'와 같이 설정한 경우 오히려 에러가 출력되더라구요. 위 문법과 관련한 관련 자료도 있다면 공유 부탁드립니다. 감사합니다.
- 해결됨PHP 7+ 프로그래밍: 객체지향
Session을 생성할 때 sessions 테이블 id 컬럼의 값이 어떻게 결정되는지 궁금합니다.
안녕하세요, Sessions 강의를 듣고 궁궁한 것이 생겨 질문드립니다. 강의 내용에서는 SessionHandlerInterface의 구현체 클래스를 선언하여 사용하는 것으로 보이는데요. index.php의 예제 코드 실행시 처음 생성되는 SESSION 데이터가 있으면 sessions 테이블에 세션 정보가 INSERT 되는 것으로 확인이 되었습니다. 하지만 sessions 테이블의 id 컬럼의 값이 자동으로 들어가지는 것을 확인할 수 있었는데요. 이 id은 PHPSESSID에서 가져오는 것 같은데, 그 과정에 대해 알 수 있을까요?
- 해결됨PHP 7+ 프로그래밍: 객체지향
라우팅 설정 후 페이지 접속 경로에 대한 질문입니다.
안녕하세요, 라우팅 강의를 듣고 난 후 궁금한 점이 생겨 질문드립니다. 예제 코드에서 '/', '/posts/{id}'라는 라우팅을 설정해 주셨는데요. 로컬 환경에서 학습한다는 기준으로 PHP 내장서버를 실행시켜 localhost:8000/index.php, localhost:8000/src/Database/Adaptor.php 등으로 접속했을 때에도 이에 대한 접근 불가 설정을 하지 않았으므로 접근이 허용되는 문제가 있었습니다. 이를 해결 하기 위한... 즉, 개발자가 정의한 URL 패턴 외 .php가 붙은 확장자로는 접근이 불가하게 설정할 수 있는 방법이 있을까요?
- 해결됨PHP 7+ 프로그래밍: 객체지향
Composer 설정 후 생성되는 .vendor 및 composer.json, composer.lock.json에 대한 질문입니다.
안녕하세요, Composer 강의를 학습하던 중 예제 코드들을 Git에 형상관리를 하려고 합니다. 다만, Composer 설정 후 생성되는 .vender 폴더, composer.json, composer.lock.json 파일의 경우 Git으로 형상관리를 시키는게 맞는지, 아니면 이들은 Ignore 설정을 통해 형상관리에서 제외시키는게 맞는지 궁금합니다.
- 미해결PHP 7+ 프로그래밍: 객체지향
Context에 대해서 궁금한게 있습니다
안녕하세요 궁금한게 있습니다 static::who메소드를 호출하는 부분에서 부모 Class 또는 자식 Class에 static::(임의의 메소드)가 없으면 부모 또는 자식에서 메소드를 찾는건가요? 왜냐하면 아래 코드 실행 결과가 이렇게 나왔습니다 string(5) "A Foo" string(5) "B Foo" string(1) "B" class A { public static function foo() { var_dump('A Foo'); static::who(); } public static function who() { var_dump(__CLASS__); } } class B extends A { public static function test() { self::foo(); } public static function who() { var_dump('B Foo'); var_dump(__CLASS__); } } $b = new B(); $b->test();
- 미해결PHP 7+ 프로그래밍: 객체지향
return에 대한 질문입니다
PostController 부분에서 class PostController { /* ..... */ public static function edit($id) { if ($post = Post::get($id)) { $post->isOwner() && Theme::view('post', [ 'post' => $post, 'requestUrl' => '/posts/' . $post->id, 'method' => 'patch' ]); } return http_response_code(404); } /* ..... */ } 다른 함수와 다르게 여기부분만 if문 안에 return을 안해주는 이유가 궁금합니다.
- 미해결PHP 7+ 프로그래밍: 객체지향
Cannot load Xdebug - it was already loaded 에 대한 에러
안녕하세요 선생님 정말 강의 잘 듣고 있는데요 composer를 설치하는데.. 문제가 생겨서 그냥 아주 간단하게 설치를 하면 될거 같았는데 여기서도 xdebug 때문에 설치가 안되는거 같은데.. 조금이라도 힌트를 얻고 가고 싶어서 글을 적게 되었습니다 혹시 이게 무슨 문제인지 조언을 구할수있을까요?
- 미해결PHP 7+ 프로그래밍: 객체지향
autoloading error 질문입니다.
고생하십니다. 새해 복 많이 받으세요 선생님. 코드는 다음과 같습니다. <?php /** * Classes Autoloading (PSR-4) */ // include './Classes/MyClass.php'; use Classes\MyClass; spl_autoload_register(function ($classname) { include $classname . '.php'; }); new MyClass(); 디렉토리 구조는 /Users/chamusong/Desktop/php-oop/functions/SPL/4 Classes-MyClass.php index.php 이렇게 되어있습니다. 오류내용은 다음과 같습니다. PHP Warning: include(Classes\MyClass.php): failed to open stream: No such file or directory in /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php on line 13 PHP Stack trace: PHP 1. {main}() /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:0 PHP 2. spl_autoload_call($class_name = 'Classes\\MyClass') /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:16 PHP 3. {closure:/Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:12-14}($classname = 'Classes\\MyClass') /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:16 PHP Warning: include(): Failed opening 'Classes\MyClass.php' for inclusion (include_path='.:/opt/homebrew/Cellar/php@7.4/7.4.27/share/php@7.4/pear') in /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php on line 13 PHP Stack trace: PHP 1. {main}() /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:0 PHP 2. spl_autoload_call($class_name = 'Classes\\MyClass') /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:16 PHP 3. {closure:/Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:12-14}($classname = 'Classes\\MyClass') /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:16 PHP Fatal error: Uncaught Error: Class 'Classes\MyClass' not found in /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php:16 Stack trace: #0 {main} thrown in /Users/chamusong/Desktop/php-oop/functions/SPL/4/index.php on line 16 오류내용을 보면 경로의 문제인 것 같기도 합니다.
- 미해결PHP 7+ 프로그래밍: 객체지향
MyExceotion에서 부모생성자 호출 시.
class MyException extends Exception { public function __construct() { parent::__construct(); } } try { throw new MyException('Hello, World'); } catch (Exception $e) { var_dump($e->getMessage()); } class MyException extends Exception {} try { throw new MyException('Hello, World'); } catch (Exception $e) { var_dump($e->getMessage()); } 부모 생성자를 명시적으로 작성해준 경우는 empty string을 출력하고 생략할 경우는 Hello World를 출력하는데 둘의 차이점이 궁금합니다.
- 해결됨PHP 7+ 프로그래밍: 객체지향
강의주제와는 조금 벗어나지만.. 변수명에 대해서 궁금합니다
php를 작업을 하면서 java에서는 주로 카멜케이스를 사용해서 변수를 선언하고 클래스는 파스칼케이스 그리고 파이썬에서는 스네이크케이스 자바스크립트도 카멜케이스,파스칼케이스를 주로 사용하는데 제가 어떤 php코드에서는 스네이크케이스 그리고 어떤곳은 카멜케이스여서 물론 개발자 마다 선호에 따라 다르겠지만 선생님은 어떤것을 주로 권장하시는지 정말 궁금합니다 또.. 혹시 제가 참고할만한 자료가 있을까요? 주제와 벗어나지만 변수명을 계속 적다가 너무 궁금해서 여쭤봅니다!
- 해결됨PHP 7+ 프로그래밍: 객체지향
namespace vs extends 에 대해서 궁금합니다!
선생님 안녕하세요! namespace를 공부하다가 음.. 이게 extends와 비슷한거 같은데 extends 가 있는데 왜 굳이 namespace도 있어야 하나 그런 생각이 들었습니다 아직 이해를 제대로 못하고 있어서 그런거 같기도 하고요 package manager..? 시간에 진가가 나온다고 하셔서 그때 가면 또 다르게 이해가 될수도 있겠지만 저의 질문은 아래와 같습니다 - namespace 와 extends 조금 어떻게 다를까요?
- 미해결PHP 7+ 프로그래밍: 객체지향
getter setter 는 private proerty에만 적용되나요?
getter , setter, unset, isset magic method들은 property에 대해서만 작동하는데 private프로퍼티들에만 작동하나요? public으로했을떄 호출이 안되요
- 미해결PHP 7+ 프로그래밍: 객체지향
ternary operator 질문
ternary operator 에 statement가 사용될수있나요강좌 17:40초에public static function getInstance(){ return self:$instance ?: self::$instance = new Self();}이런 코드가있는데 ternary operator사용한거를 풀어보면return self:$instance ? self:$instance : self::$instance = new Self();이렇게되잖아요? self::$instance는값이라 괜찮고self::$instance = new Self(); 는 statement인데 저기에 들어갈수가있나요?이렇게가 맞는거 아닌가요?return self:$instance ? self:$instance : new Self();