php7-internal icon indicating copy to clipboard operation
php7-internal copied to clipboard

交流&吐槽

Open pangudashu opened this issue 7 years ago • 28 comments

pangudashu avatar Mar 24 '17 09:03 pangudashu

这样看太抽象了,给些实际的gdb调试例子会好些

whiteHat001 avatar May 16 '17 13:05 whiteHat001

好的,后续会补充些 @whiteHat001

pangudashu avatar May 17 '17 01:05 pangudashu

@pangudashu ,我最近在用C++写一个php扩展项目,我想要php扩展中的对象中的属性可以绑定到C++的对象属性,使得php中调用_get_set的时候可以同事修改C++对象的属性。 zend_update_property()可以更新PHP的对象属性,但是没有成功绑定C++的对象属性。 例如:

//PHP extension code:
PHP_METHOD(Car, __construct)
{
    Car *car = NULL;
    zval *object = getThis();
    car = new Car();
    car_object *obj = Z_PHP7OBJ_P(object);
    obj->car = car;
    zend_update_property_long(car_ce, getThis(), "speed", sizeof("speed")-1, obj->car->speed TSRMLS_CC);
}

PHP_METHOD(Car, accelerate)
{
    Car *car;
    car_object *obj =Z_PHP7OBJ_P(getThis());
    car = obj->car;
    if (car != NULL) {
        car->accelerate();
    }
}

PHP_METHOD(Car, getCurrentSpeed)
{
    Car *car;
    car_object *obj = Z_PHP7OBJ_P(getThis());
    car = obj->car;
    if (car != NULL) {
        RETURN_LONG(car->getCurrentSpeed());
    }
    RETURN_NULL();
}
//c++ code:
#include "car.h"

Car::Car() {
    this->speed = 0;
}


void Car::accelerate() {
    this->speed += 5;
}

int Car::getCurrentSpeed() {
    return this->speed;
}
//php code:
$car = new Car();
echo $car->speed;//echo 0
echo $car->getCurrentSpeed();// echo 0
$car->accelerate();
echo $car->speed;//echo 0,但是我想要的是5
echo $car->getCurrentSpeed();// echo 5

我在想,是不是php扩展中有提供宏可以实现,又或者在扩展中重写_get和_set的魔术方法,但是都不知道怎样去实现

hihozhou avatar May 23 '17 02:05 hihozhou

@imaben @pangudashu 我也这么认为,让大家可以讨论讨论分享经验,我也可以帮人解答我知道的问题

hihozhou avatar May 27 '17 03:05 hihozhou

可以开个交流群吗?

JaguarJack avatar Jun 02 '17 00:06 JaguarJack

感谢pangudashu的精心制作,会坚持读下去的

LHRchina avatar Jun 06 '17 14:06 LHRchina

readme中的交流群是微信的,怎么不用qq

toxmc avatar Jun 08 '17 01:06 toxmc

赞!

zimuyang avatar Jun 12 '17 04:06 zimuyang

赞!

secretgao avatar Jun 23 '17 01:06 secretgao

有的底层c代码段建议标注上文件出处,因为某些部分讲解代码跳跃性太大,需要全文件夹搜索代码出处

yunyu2019 avatar Jun 28 '17 09:06 yunyu2019

是不是可以考虑忽略具体实现的代码,写成大家易于理解的代码,效果会好一些。就像《Redis设计与实现》中,大部分代码都是作者用python简写的,便于大家理解。

CraryPrimitiveMan avatar Oct 08 '17 06:10 CraryPrimitiveMan

@CraryPrimitiveMan 有些部分确实罗列了太多的源码不太容易理解,后面会优化删除非关键的实现,保留最核心的部分。这个项目最初的定位是作为PHP内核的开发手册,而不是一本科普性质的书,所以会尽可能全、细的介绍,希望让更多的人可以具备PHP内核的开发能力,而不仅仅是了解。

pangudashu avatar Oct 09 '17 06:10 pangudashu

能搞一个gitbook之类的么,可以在线看,或者转化为pdf

medmin avatar Nov 01 '17 04:11 medmin

@medmin 现在的文档是markdown的格式,可以git clone下来,转换成html,自己本机部署成web项目进行查看

yunyu2019 avatar Nov 01 '17 09:11 yunyu2019

再回来看发现作者都要出书了啊,恭喜大佬了

whiteHat001 avatar Nov 23 '17 13:11 whiteHat001

盘古大叔,可否增加gdb调试发现php故障章节,如服务卡死,如何使用pstack strace gdb php7/.initgdb等信息

137-rick avatar Nov 24 '17 02:11 137-rick

第三章opcache有两节内容什么时候放出来呢

yunyu2019 avatar Dec 07 '17 09:12 yunyu2019

能搞一个gitbook之类的么,可以在线看,或者转化为pdf

tanhaipeng avatar Dec 21 '17 08:12 tanhaipeng

环境 php 7.2 ,有没有同学告知下为何是 2 3 4

<?php
$a = [];
xdebug_debug_zval('a'); // refcount=2
$b = $a;
xdebug_debug_zval('a'); // refcount=3
$c = $a;
xdebug_debug_zval('a'); // refcount=4

另外,作者这本书有错误的地方,引用计数部分沿用了 php 5 的,其实 php 7 有改动:

前面已经介绍过PHP变量的内存管理,即引用计数机制,当变量赋值、传递时并不会直接硬拷贝,而是增加value的引用数,unset、return等释放变量时再减掉引用数

php 7 中基本类型不会增加引用数。鸟哥这篇文章才是正确的:深入理解PHP7内核之 Reference

Littlesqx avatar Aug 05 '18 13:08 Littlesqx

@Littlesqx 引用计数是在第2章介绍的,第5章的主题不是引用计数,你贴的那段在那里只是泛指好吗。另外你贴的鸟哥这篇文章是关于“引用(reference)”的,而不是“引用计数(refcount)”

pangudashu avatar Aug 06 '18 11:08 pangudashu

@pangudashu 嗯,我仔细看了下,是我的问题,抱歉。

最简单的类型是 true、false、long、double、null,其中true、false、null 没有 value,
直接根据 type 区分,而long、double 的值则直接存在 value 中:zend_long、double,
也就是标量类型不需要额外的value指针。

这里已经说的很清楚了。

Littlesqx avatar Aug 06 '18 11:08 Littlesqx

大佬写的非常精辟。但是能不能给文件加上目录号码。。这样查的时候也方便。。

flymenn avatar Aug 15 '18 08:08 flymenn

一个腾讯课堂上在线收费培训机构分发的公开课教材是这本书的内容,大叔应该跟这家没关系吧?😮感觉他们的讲师水平写不了这个

pakoneko avatar Apr 26 '19 16:04 pakoneko

大叔,写这个的时候是以php7.几为基础写的?

wistonehorse avatar Jun 24 '19 08:06 wistonehorse

@wistonehorse 7.0.28

pangudashu avatar Jun 26 '19 11:06 pangudashu

我是来催更的~求协程那章

ksana-kami avatar Apr 28 '20 09:04 ksana-kami

@ksana-kami

https://github.com/php-extension-research/study

这里有一个,可以先看着

huanghantao avatar Apr 28 '20 10:04 huanghantao

@huanghantao 收到。感谢🙏

ksana-kami avatar Apr 29 '20 01:04 ksana-kami